我在试图解决这个问题时遇到了问题。基本上,我有一个带有复选框的列表框,使其成为“已选中”列表框。
我想要做的是当用户点击按钮时,复选框被切换(显示或隐藏)。
我已尝试将可见性绑定到我的视图模型中的属性,但这不起作用。
正确的方法是什么?我搜索过google和SO,但找不到任何可靠的内容。
感谢。
答案 0 :(得分:0)
将复选框的可见性绑定到列表中包含的类的属性,该列表是列表框的项目源。
这是一些代码。这是一个快速测试并使用后面的代码,但应该很容易移植到您的视图模型。
类别:
public class CheckString
{
public Visibility Visibility
{
get
{
Visibility retval = Visibility.Collapsed;
if (IsChecked)
{
retval = Visibility.Visible;
}
return retval;
}
}
public bool IsChecked { get; set; }
public string Description { get; set; }
public CheckString() {}
}
背后的代码
public partial class MainPage : PhoneApplicationPage
{
public List<CheckString> CheckStringList { get; set; }
// Constructor
public MainPage()
{
InitializeComponent();
SetupList();
DataContext = this;
}
private void SetupList()
{
CheckStringList = new List<CheckString>();
CheckString cs1 = new CheckString { Description = "Test 1"};
CheckStringList.Add(cs1);
CheckString cs2 = new CheckString { IsChecked = true, Description = "Test 2" };
CheckStringList.Add(cs2);
CheckString cs3 = new CheckString { Description = "Test 3" };
CheckStringList.Add(cs3);
}
}
的Xaml
<ListBox.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition
Width="Auto" />
<ColumnDefinition
Width="*" />
</Grid.ColumnDefinitions>
<CheckBox
Grid.Column="0"
Visibility="{Binding Visibility}"
IsChecked="{Binding IsChecked}" />
<TextBlock
Grid.Column="1"
Text="{Binding Description}" />
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>