0

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

4

1 回答 1

0

您可以通过遵循 MVVM 并使列表框的值(本质上是颜色)来自模型来轻松实现这一点。然后可以将表单的背景绑定到相同的值。

所以基本上你的模型将是:

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

public enum Colors
{
    Red,
    Blue,
    Green
}

你的 Viewmodel 会收集这个。

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

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

于 2012-10-03T15:48:45.263 回答