-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

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 に答える