WPF Combobox与ItemsSource - 我设置什么路径来访问此数据绑定?

时间:2014-04-02 18:16:05

标签: c# wpf xaml data-binding combobox

我在设置XAML中的Binding / Path属性时遇到问题。

我知道这个ComboBox的ItemSource属性正在正确更新,因为当我更新viewmodel时,我得到了一堆空文本框(而不是带有文本的文本框,这是什么我期待)。

所以我相信我的ComboBox的DataTemplate部分中的Binding需要一个不同的绑定路径,但我不确定如何设置绑定路径。

<ComboBox ItemsSource="{Binding Path=Locations}" Visibility="{Binding SettingsOptionsVisibility}" Grid.Column="0" x:Name="locationCB" VerticalAlignment="Top" SelectionChanged="locationCB_SelectionChanged"  HorizontalAlignment="Left" Width="350" Height="30" IsHitTestVisible="False" IsEnabled="False" Focusable="False">
    <ComboBox.ItemTemplate>
        <DataTemplate>
                <TextBlock  Text="{Binding Name}"></TextBlock>
        </DataTemplate>
    </ComboBox.ItemTemplate>
</ComboBox>

以下是我的代码隐藏中观察列表中我的LocationCB项目源的图片: http://imgur.com/x4SYWER

正如所料,我的组合框中填充了8个(无文字)元素。我需要做什么才能将文本绑定到Name以进行连接?

编辑:ViewModel中的Locations对象的代码:

public ObservableCollection<Location> Locations { get; set; }

根据请求包含在observable集合中的Location类的代码:

public class Location
{
    public Guid LocationID;
    public Guid ParentID;
    public String Name;
    public bool isValid;
}

2 个答案:

答案 0 :(得分:2)

将位置对象的字段更改为属性:

public class Location
{
    public Guid LocationID { get; set; }
    public Guid ParentID { get; set; }
    public String Name { get; set; }
    public bool isValid { get; set; }
}

答案 1 :(得分:1)

您应该绑定属性而不是变量。而不是

public string Name;

您应该将上述内容更改为

public string Name {get;set;}

更好的是,可以实现INotifyPropertyChanged ..