如何使用Binding在WPF中使用列表框中的所选颜色更改窗体窗体背景颜色?

时间:2012-10-03 15:36:43

标签: wpf binding user-controls listbox wpf-controls

我正在使用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方法,怎么做?

1 个答案:

答案 0 :(得分:0)

您可以通过跟踪MVVM并使列表框的值(基本上是颜色)来自Model来轻松实现。然后,表单的背景可以绑定到相同的值。

基本上你的模型将是:

public class ColorModel
{
   public Enum Colors{get; set;}
}

public enum Colors
{
    Red,
    Blue,
    Green
}

您的Viewmodel将收集此内容。

然后您将View将其绑定到列表框。 对于窗口背景 - 您可以将其绑定到列表框值并使用转换器(因为模型没有将其定义为颜色) - 您可以更改颜色。

如果你想要一份完整的工作样本 - 让我知道 - 会尽快在我的办公桌上发布一些东西。