データグリッドのボタンに関連付けられたコンテキストメニューがあります。ビューモデルにある文字列のリストに基づいてコンテキストメニュー項目を変更したい。ボタンをクリックしても何も表示されません。
これが私が使用しているxamlで、データグリッドにあります。
<Button Grid.Column="1" Content="..." Click="Button_Click">
<Button.ContextMenu>
<ContextMenu ItemsSource="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type UserControl}},Path=DataContext.SelectableDescriptions}">
<TextBlock Text="{Binding}"/>
</ContextMenu>
</Button.ContextMenu>
</Button>
DataGridxaml全体は次のとおりです。
<DataGrid Grid.Row="1" Grid.ColumnSpan="4" CanUserAddRows="True" AutoGenerateColumns="False" CanUserDeleteRows="True" ItemsSource="{Binding JobPricings, Mode=TwoWay}" SelectedItem="{Binding SelectedJobPricing, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" >
<DataGrid.Columns>
<DataGridTemplateColumn Header="Description" Width="25*" >
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="75*"/>
<ColumnDefinition Width="25*"/>
</Grid.ColumnDefinitions>
<TextBox Grid.Column="0" Text="{Binding Description,Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
<Button Grid.Column="1" Content="..." Click="Button_Click">
<Button.ContextMenu>
<ContextMenu ItemsSource="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type UserControl}},Path=DataContext.SelectableDescriptions}">
<TextBlock Text="{Binding}"/>
</ContextMenu>
</Button.ContextMenu>
</Button>
</Grid>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Header="Unit Price" Binding="{Binding UnitPrice, Mode=TwoWay}" Width="25*"/>
<DataGridTextColumn Header="Unit" Binding="{Binding Unit, Mode=TwoWay}" Width="25*"/>
<DataGridTemplateColumn Header="Currency " Width="25*" >
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Grid>
<ComboBox SelectedValue="{Binding CurrencyID, Mode=TwoWay}" SelectedValuePath="ID" DisplayMemberPath="Description" ItemsSource="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type UserControl}},Path=DataContext.Currencies}" ></ComboBox>
</Grid>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
ビューモデルを介してコンテキストメニューをバインドしているプロパティは次のとおりです。
public ObservableCollection<string> SelectableDescriptions
{
get
{
_selectableDescriptions.Add("One");
_selectableDescriptions.Add("Two");
return _selectableDescriptions;
}
set
{
_selectableDescriptions = value;
}
}
リストがコンテキストメニューに表示されない理由について何か考えはありますか?