-1

请解释为什么这不起作用..

 <ContextMenu>     
      <MenuItem>
          <MenuItem.Header>
               <TextBox Name="tbColor" Text="Black" />
          </MenuItem.Header>
          <MenuItem.Icon>
               <TextBox Text="{Binding ElementName=tbColor,Path=Text}" />
          </MenuItem.Icon>                                                                    
      </MenuItem>
 </ContextMenu>

我尝试了几种方法,但没有。RelativeSource不行。。

编辑..从另一个控件绑定工作..

<DataGrid Foreground="{Binding ElementName=tbColor,Path=Text,Converter={StaticResource textToBrushConverter}}">          
        <DataGrid.ContextMenu>
            <ContextMenu>....             
4

3 回答 3

3

快速浏览MSDN关于ContextMenu,的内容MenuItemHeaderedItemsControl看起来您可以将任何您想要的内容放入MenuItem Header. 仔细检查表明情况并非如此。a的Header属性MenuItem实际上是在寻找一个字符串。您可以通过在 中放置 aTextBlockHeader不是TextBox.

Icon虽然我没有深入研究它,但我怀疑对象的属性也是如此(除了 Image)MenuItem

于 2012-04-19T13:20:04.893 回答
1

让原始代码像这样工作..丑陋但出于我自己的理智..

<MenuItem.Header>
   <TextBox Name="tbColor" Text="Black" TextChanged="tbColor_TextChanged" />
</MenuItem.Header>
<MenuItem.Icon>
   <Rectangle Name="rectangleColor" Width="20" Height="20" />
</MenuItem.Icon>

在后面的代码中..

private void tbColor_TextChanged(object sender, TextChangedEventArgs e)
    {
        try
        {
            rectangleColor.Fill = new SolidColorBrush((Color) ColorConverter.ConvertFromString(((TextBox) sender).Text));
        }
        catch (Exception)
        {
            return;
        }
    }
于 2012-04-19T14:05:19.947 回答
0

控件可视树之外的上下文菜单,因此找不到元素名称。尝试 -

{绑定 PlacementTarget,RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type ContextMenu}}}"

于 2012-04-19T13:31:35.183 回答