我正在尝试显示TextBox和Rectangle,它们都在另一个类中显示Color属性。我使用Caliburn.Micro和MVVM方法(我是新手)。
我的问题是TextBox默认写入Color.ToString,但Rectangle没有填充相同的Color,实际上矩形一直是不可见的。如何填写?
从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; }
答案 0 :(得分:2)
除非您对Color属性使用错误的命名空间,否则您的代码应该可以正常工作
可以在System.Drawing和System.Windows.Media.Colors下找到颜色。确保使用System.Windows.Media以将其与Rectangle绑定。
使用System.Drawing,它将如下所示;没有填充矩形
答案 1 :(得分:1)
很抱歉告诉您这一点,但您的代码在我做的时候没有做任何更改:
更新&gt;&gt;&gt;
如果您调整Window
的大小以使其变大,则应该会看到Rectangle
后面显示TextBlock
。这是不使用Visual Studio设计器和工具箱的拖放功能的一个很好的理由。如果您正确使用Grid
中的行和列,则不会出现此问题。
答案 2 :(得分:0)
它应该工作。您没有看到Rectangle
的原因是TextBox
和Rectangle
位于同一Grid.Row
和同一Grid.Column
Grid
因此Textbox
重叠Rectangle
。您必须将它们放在不同的列中。