我有一个组合框,我在其中设置了显示成员属性。
<dxe:ComboBoxEdit EditValue="{Binding MyEditVale}" ItemsSource="{Binding MyListOfObjects}" DisplayMember="{Binding MyDisplayMember}" ItemTemplate="{StaticResource ColoredTemplate}"/>
但是,我想在项目模板中使用display member属性。
<DataTemplate x:Key="ColoredTemplate">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="10"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<StackPanel Grid.Column="0" ToolTip="This entry has been made obsolete please select another option" Background="Red" Visibility="{Binding IsObsolete, Converter={StaticResource BooleanToVisibilityConverter}}"/>
<TextBlock Grid.Column="1" Text="{*I want to bind to the display member here*}" Margin="2,0,0,0"/>
</Grid>
</DataTemplate>
我很难让这个工作。 出于测试目的,我一直在使用此代码。
<TextBlock Grid.Column="1" Text="{Binding Name}" Margin="2,0,0,0"/>
我绑定的对象确实有一个Name属性,但可能还有其他不可用的实例。
有没有办法直接使用/绑定项目模板中的显示成员属性?
答案 0 :(得分:1)
您可以同时使用DisplayMemberPath
或ItemTemplate
,但不能同时使用两者。
<强>的DisplayMemberPath 强>
<ComboBox ItemsSource="{Binding Path=MyListOfObjects}" DisplayMemberPath="Name"/>
<强>的ItemTemplate 强>
<ComboBox ItemsSource="{Binding Path=MyListOfObjects}">
<ComboBox.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="10"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<StackPanel Grid.Column="0" ToolTip="This entry has been made obsolete please select another option" Background="Red" Visibility="{Binding IsObsolete, Converter={StaticResource BooleanToVisibilityConverter}}"/>
<TextBlock Grid.Column="1" Text="{Binding Path=Name}" Margin="2,0,0,0"/>
</Grid>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
答案 1 :(得分:0)
看看这有助于你
<TextBlock Grid.Column="1" Text="{Binding DisplayMember, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type dxe:ComboBoxEdit}}}" Margin="2,0,0,0"/>
答案 2 :(得分:0)
MyListOfObjects必须是对象的集合,'Name'必须是对象项的属性,然后才能工作。我从这个post获取了一个代码片段(使用ListBox,但对于Combobox应该是相同的)。
<ListBox Grid.Row="0" ItemsSource="{Binding SelectedFiles}" Grid.IsSharedSizeScope="True">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition SharedSizeGroup="col0"></ColumnDefinition>
<ColumnDefinition SharedSizeGroup="col1"></ColumnDefinition>
<ColumnDefinition SharedSizeGroup="col2"></ColumnDefinition>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="{Binding Name}" Margin="10,0"></TextBlock>
<TextBlock Grid.Column="1" Text="{Binding Length}" Margin="10,0"></TextBlock>
<TextBlock Grid.Column="2" Text="{Binding LastAccessTime}" Margin="10,0"></TextBlock>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
SelectedFiles只是一个FileInfo列表
public List<FileInfo> SelectedFiles
{
get;
set;
}