4

我正在尝试显示 TextBox 和 Rectangle 都在另一个类中显示 Color 属性。我使用 Caliburn.Micro 和 MVVM 方法(我是新手)。

我的问题是TextBox默认写入Color.ToString,但Rectangle没有填充相同的颜色,实际上矩形一直是不可见的。如何填写?

从 XAML 视图中提取:

<TextBox Grid.Row="7" Grid.Column="1" Margin="10,7,20,7"
         Text="{Binding Path=Design.EdgeHighlightOutOfRangeColor}"
         FontSize="12" FontFamily="Rockwell" Width="110" HorizontalAlignment="Left"/>
<Rectangle Grid.Row="7" Grid.Column="1" Width="20" Height="20" Margin="100,7,20,7">
    <Rectangle.Fill>
        <SolidColorBrush Color="{Binding Path=Design.EdgeHighlightOutOfRangeColor}"/>
    </Rectangle.Fill>
</Rectangle>

从 C# ViewModel 中提取:

_designSettings = _settings.DesignSettings;
public DesignSettings Design
{
    get { return _designSettings; }
    set
    {
        _designSettings = value;
        NotifyOfPropertyChange(() => Design);
    }
}

在 DesignSettings 类中,我有这个属性被绑定:

public Color EdgeHighlightOutOfRangeColor { get; set; }
4

3 回答 3

2

很抱歉告诉你这一点,但你的代码对我来说很好,无需进行任何更改:

在此处输入图像描述

更新>>>

如果您调整您的大小Window以使其更大,您应该Rectangle会看到TextBlock. 这是使用 Visual Studio 设计器和工具箱的拖放功能的一个很好的理由。如果您Grid正确使用行和列,您将不会遇到此问题。

于 2013-10-18T09:13:25.600 回答
2

除非您为 Color 属性使用错误的命名空间,否则您的代码应该可以工作。

颜色可以在System.DrawingSystem.Windows.Media.Colors下找到。确保您使用 System.Windows.Media 以将其与 Rectangle 绑定。

使用 System.Drawing,它将如下所示;没有填充的矩形

在此处输入图像描述

于 2013-10-18T09:33:43.610 回答
0

它应该工作。您看不到您的问题Rectangle是您的位置相同,因此与TextBox您的. 您必须将它们放在不同的列中。RectangleGrid.RowGrid.ColumnGridTextboxRectangle

于 2013-10-18T09:16:36.630 回答