#windows-phone-7 #.net-4.0 #silverlight-3.0
#windows-phone-7 #.net-4.0 #silverlight-3.0
Вопрос:
У меня возникают проблемы при попытке разобраться в этом. В принципе, у меня есть listbox с флажком в нем, что делает его «Отмеченным» listbox.
Что я хочу сделать, так это когда пользователь нажимает кнопку, флажок переключается (либо отображается, либо скрывается).
Я пытался привязать видимость к свойству в моей модели просмотра, но это не работает.
Каков правильный способ сделать это? Я искал в Google и SO и не смог найти ничего надежного.
Спасибо.
Комментарии:
1. Не могли бы вы опубликовать какой-нибудь код? Трудно сказать, что происходит не так, только из вашего описания.
Ответ №1:
Привязать видимость флажка к свойству класса, содержащегося в списке, который является источником элементов listbox.
Вот некоторый код. Это был быстрый тест, использующий исходный код, но его следует легко перенести в вашу модель просмотра.
Класс:
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>
Комментарии:
1. Как это позволит установить видимость флажка? Я хочу показать или скрыть флажки в списке.
2. Извините — неправильно истолковал вопрос. Мы опубликовали пример кода, который соответствует вашим требованиям.