2015-05-29 79 views
0

我有一個組合框,我設置了顯示成員屬性。綁定在項目模板中顯示組合框的成員

<dxe:ComboBoxEdit EditValue="{Binding MyEditVale}" ItemsSource="{Binding MyListOfObjects}" DisplayMember="{Binding MyDisplayMember}" ItemTemplate="{StaticResource ColoredTemplate}"/> 

但是,我想在項目模板中使用顯示成員屬性。

<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"/> 

我綁定到的對象確實有一個名稱屬性,但可能有其他實例不可用。

是否有任何方式直接使用/綁定項目模板中的顯示成員屬性?

回答

1

您可以使用DisplayMemberPathItemTemplate,但不能同時使用兩者。

的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> 
0

看看這可以幫助你

<TextBlock Grid.Column="1" Text="{Binding DisplayMember, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type dxe:ComboBoxEdit}}}" Margin="2,0,0,0"/> 
+0

的名單我想這一點,並在下拉列表的文本是「名」,所以它沒有鏈接到顯示部件,但它帶回來的字符串值而不是獲取對象上的「Name」屬性的值 – MatthewHall3D

0

MyListOfObjects必須是對象的集合, '名稱' 必須b e物品的屬性,那麼它應該工作。我從這個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; 
} 
+0

目前,MyListOfObjects是一個名爲Name的屬性集合。但是,這可能並非總是如此,所以我無法將項目模板的文本框中的綁定硬編碼爲Name。這是我需要使用顯示成員的能力,因此可以即時設置綁定 – MatthewHall3D