c# - WPF Textblock文本不会在组合框所选项目上动态更改

标签 c# wpf mvvm .net-3.5 textblock

我有一个MVVM应用程序。在WPF主窗口中,除其他控件外,我还有一个combox和一个textblock。

当我从组合框中选择一个值时,文本块文本应根据组合框中选择的项目动态更改其文本值(取决于组合框中所选项目的ID)。

我的问题是,当我在组合框中选择一个项目时,文本块文本不会更改,它始终具有默认值。任何想法如何解决这个问题?

我只想使用xaml做到这一点。

模型:

public class Item
{
    #region Constructors

    public Item() { }

    public Item(int id, string desc)
    {
        this.Id = id;
        this.Desc = desc;
    }

    #endregion

    #region Properties

    public int Id
    {
        get;
        set;
    }

    public string Desc
    {
        get;
        set;
    }

    #endregion

    public override string ToString()
    {
        return this.Desc;
    }
}

View 模型中的 MVVM属性:
private ObservableCollection<Item> _myItems;
public ObservableCollection<Item> MyItems
{
    get { return _myItems; }
    set { _myItems= value; }
}

查看:
<ComboBox x:Name="MyWPFCombo"           
          ItemsSource="{Binding MyItems}"/>

<TextBlock Padding="5 10 0 0">
    <TextBlock.Style>
        <Style TargetType="{x:Type TextBlock}">
           <Setter Property="Text" Value="Select the items:" />
           <Style.Triggers>
               <DataTrigger Binding="{Binding ElementName=MyWPFCombo, Path=Id}" Value="10">
                   <Setter Property="Text" Value="Select the old items:" />
               </DataTrigger>                               
           </Style.Triggers>
        </Style>
    </TextBlock.Style>
</TextBlock>

最佳答案

您需要提供两件事

1)您需要设置ComboBox的SelectedValuePath

 <ComboBox x:Name="MyWPFCombo"       SelectedValuePath="Id"  
      ItemsSource="{Binding MyItems}" />

2)在DataTrigger中,您需要提供路径作为SelectedValueComboBox,而不是PropertyName。
<DataTrigger Binding="{Binding ElementName=MyWPFCombo, Path=SelectedValue}" Value="10">
                        <Setter Property="Text" Value="Select the old items:" />
                    </DataTrigger>

关于c# - WPF Textblock文本不会在组合框所选项目上动态更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53857077/

相关文章:

C# 出现错误。无法从 System.Data.DataRow 隐式转换为 DataRow

c# - 如何使用 C# lang 在 asp .net 中将 gridview 数据转换为 excel 表

c# - 转换器不能应用于需要 IValueConverter 类型的属性

c# - Windows 8 - 在代码隐藏中为自定义属性设置动画

c# - WPF 中的进度条 - 停留在 50%

wpf - 将 WPF TreeView 与通用 View 模型绑定(bind)

c# - Elasticsearch.net v. 2.3+ 库 (c#) 中多字段映射的替代方案?

c# - 游戏脚本或其他自定义代码包含 OnMouse_ 事件处理程序

wpf - 当 wpf 数据网格的单元格中的值使用 MVVM 更改时,如何引发事件?

Android 存储库模式 - 如何从 View 模型更新嵌套的回收器 View 项