我正在使用ListBox
,我想在点击ListBoxItem
时更改背景窗口颜色,我的方法正在运行,但我想用绑定做同样的事情。
<ListBox Grid.Column="1" Grid.Row="3" Grid.RowSpan="2" Margin="10,20,30,10" Name="listBox1" SelectionChanged="listBox1_SelectionChanged_1">
<ListBoxItem Content="Blue" Name="lst" />
<ListBoxItem Content="Green" Name="lst1" />
<ListBoxItem Content="Yellow" Name="lst2"/>
<ListBoxItem Content="Transparent" Name="lst3"/>
</ListBox>
我使用以下方法:
private void listBox1_SelectionChanged_1(object sender, SelectionChangedEventArgs e)
{
if(listBox1.SelectedIndex.ToString() == "0")
{
win.Background = Brushes.Blue;
}
else if (listBox1.SelectedIndex.ToString() == "1")
{
win.Background = Brushes.Green;
}
else if (listBox1.SelectedIndex.ToString() == "2")
{
win.Background = Brushes.Yellow;
}
else
{
win.Background = Brushes.Transparent;
}
}
但我需要使用bind方法,怎么做?
答案 0 :(得分:0)
您可以通过跟踪MVVM并使列表框的值(基本上是颜色)来自Model来轻松实现。然后,表单的背景可以绑定到相同的值。
基本上你的模型将是:
public class ColorModel
{
public Enum Colors{get; set;}
}
public enum Colors
{
Red,
Blue,
Green
}
您的Viewmodel将收集此内容。
然后您将View将其绑定到列表框。 对于窗口背景 - 您可以将其绑定到列表框值并使用转换器(因为模型没有将其定义为颜色) - 您可以更改颜色。
如果你想要一份完整的工作样本 - 让我知道 - 会尽快在我的办公桌上发布一些东西。