Xaml 如何更改ContextMenu项的DataContext?
在我的XAML中,我有一个只读的ListView,右键单击ListView项时,我想提供一个单击选项,该选项将更新对象的属性,并最终更新列表视图的“我的名字”列 假设我的listView位于Primary.Xaml中。这个xaml的DataContext是ObjectInfo。 Xaml有一个listView和一个ContextMenu,如下所示:Xaml 如何更改ContextMenu项的DataContext?,xaml,contextmenu,datacontext,Xaml,Contextmenu,Datacontext,在我的XAML中,我有一个只读的ListView,右键单击ListView项时,我想提供一个单击选项,该选项将更新对象的属性,并最终更新列表视图的“我的名字”列 假设我的listView位于Primary.Xaml中。这个xaml的DataContext是ObjectInfo。 Xaml有一个listView和一个ContextMenu,如下所示: <ListView x:Name="lview" SelectedIndex="0" Width="{Binding ElementName=
<ListView x:Name="lview" SelectedIndex="0" Width="{Binding ElementName=gridItems, Path=ActualWidth}" Height="{Binding ElementName=gridItems, Path=ActualHeight}" Style="{DynamicResource ListViewStyle}">
<ListView.ContextMenu>
<ContextMenu>
<MenuItem x:Name="mitem" Click="mitem_Click" >
<MenuItem.Header>
<Label HorizontalContentAlignment="Left" Content="My Name"/>
</MenuItem.Header>
</MenuItem>
</ContextMenu>
</ListView.ContextMenu>
<ListView.View>
<GridView ColumnHeaderContainerStyle="{StaticResource GridViewColumnHeaderStyle}">
<GridViewColumn Header="Id#" Width="80" DisplayMemberBinding="{Binding Id}" />
<GridViewColumn Header="Number#" Width="100" DisplayMemberBinding="{Binding Number}" />
<GridViewColumn Header="My Name" Width="80" DisplayMemberBinding="{Binding MyName}" />
</GridView>
</ListView.View>
MyName = dr.GetString("DifferentObject" + "MyName");
我像这样加载属性:
<ListView x:Name="lview" SelectedIndex="0" Width="{Binding ElementName=gridItems, Path=ActualWidth}" Height="{Binding ElementName=gridItems, Path=ActualHeight}" Style="{DynamicResource ListViewStyle}">
<ListView.ContextMenu>
<ContextMenu>
<MenuItem x:Name="mitem" Click="mitem_Click" >
<MenuItem.Header>
<Label HorizontalContentAlignment="Left" Content="My Name"/>
</MenuItem.Header>
</MenuItem>
</ContextMenu>
</ListView.ContextMenu>
<ListView.View>
<GridView ColumnHeaderContainerStyle="{StaticResource GridViewColumnHeaderStyle}">
<GridViewColumn Header="Id#" Width="80" DisplayMemberBinding="{Binding Id}" />
<GridViewColumn Header="Number#" Width="100" DisplayMemberBinding="{Binding Number}" />
<GridViewColumn Header="My Name" Width="80" DisplayMemberBinding="{Binding MyName}" />
</GridView>
</ListView.View>
MyName = dr.GetString("DifferentObject" + "MyName");
这意味着我必须更新“differentitobject”对象的属性,并监听Primary.Xaml中的更改
这是“DifferentitoObject”中我要更新并绑定到ContextMenu中的属性
private static readonly PropertyInfo<bool> IsMyNameProperty = RegisterValueProperty<bool>(x => x.IsMyName);
public bool IsMyName
{
get { return GetProperty(IsMyNameProperty); }
set
{
SetProperty(IsMyNameProperty, value);
if (value)
{
SetProperty(MyNameIdProperty, UserId);
SetProperty(MyNameProperty, Name);
}
else
{
SetProperty(MyNameIdProperty, 0);
SetProperty(MyNameProperty, string.Empty);
}
}
}
所以!我的问题是,如何为我的ContextMenu设置不同的DataContext?有人有机会看一下吗?有人有机会看一下吗?