Hel*_*lic 6 wpf datacontext binding c#-4.0
我有一个 TreeListControl 绑定到我的虚拟机中的一个集合。我还想在树列表控件内定义上下文菜单,使其标题文本绑定到虚拟机中的另一个字符串。在这种情况下如何设置数据上下文?我尝试过了
<Window.DataContext>
<model:ViewModel></model:ViewModel>
</Window.DataContext>
<Grid>
<Button Grid.Row="1" Command="{Binding CellCheckedCommand}"></Button>
<TextBlock Text="{Binding HeaderText}" Grid.Row="2">
<TextBlock.ContextMenu>
<ContextMenu>
<MenuItem DataContext="{Binding RelativeSource={RelativeSource AncestorType={x:Type Window}}, Path=DataContext}" Header="{Binding HeaderText}"></MenuItem>
</ContextMenu>
</TextBlock.ContextMenu>
</TextBlock>
</Grid>
Run Code Online (Sandbox Code Playgroud)
但它不起作用。
这是视图模型
public DelegateCommand CellCheckedCommand { get; set; }
private String _HeaderText;
public String HeaderText
{
get
{
return _HeaderText;
}
set
{
_HeaderText = value;
NotifyPropertyChanged("HeaderText");
}
}
public void NotifyPropertyChanged(String name)
{
if(PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(name));
}
}
private void CellCheckedMethod()
{
HeaderText = "Changed";
}
Run Code Online (Sandbox Code Playgroud)
这绑定到Window:
DataContext="{Binding RelativeSource={RelativeSource AncestorType={x:Type Window}}}"
Run Code Online (Sandbox Code Playgroud)
如果在 上定义了命令AddItemCommand和属性,则绑定到:AddItemTextWindow ViewModelWindow DataContext
DataContext="{Binding RelativeSource={RelativeSource AncestorType={x:Type Window}}, Path=DataContext}"
Run Code Online (Sandbox Code Playgroud)
为您的窗口提供一个名称并显式绑定到它,例如
<window x:Name="ReportsPage"/>
...
<MenuItem DataContext="{Binding ElementName=ReportsPage}"/>
Run Code Online (Sandbox Code Playgroud)
更新
由于上下文菜单实际上位于其自己的窗口中,因此绑定有点棘手。因此,最好的选择是走到RelativeSource上下文的父级并从那里提取标题文本:
<Window.DataContext>
<local:MainVM HeaderText="Jabberwocky" />
</Window.DataContext>
...
<TextBlock Text="{Binding HeaderText}">
<TextBlock.ContextMenu>
<ContextMenu>
<MenuItem Header="{Binding Path=Parent.DataContext.HeaderText,
RelativeSource={RelativeSource Self}}" />
</ContextMenu>
</TextBlock.ContextMenu>
Run Code Online (Sandbox Code Playgroud)
对于这个上下文产生这个

| 归档时间: |
|
| 查看次数: |
9102 次 |
| 最近记录: |