Ich versuche, die IsSelected-Eigenschaft eines ListViewItem an eine Eigenschaft in einem ViewModel zu binden. Es funktioniert gut in WPF, aber in Windows RT wird die IsSelected-Eigenschaft nie festgelegt.ListViewItem IsSelected Binding - Funktioniert für WPF, aber nicht für WinRT
public class Item : INotifyPropertyChanged
{
private readonly string name;
private bool isSelected;
public event PropertyChangedEventHandler PropertyChanged;
public bool IsSelected
{
get { return isSelected; }
set { isSelected = value; RaisePropertyChanged("IsSelected"); }
}
public string Name { get { return name; } }
public Item(string name)
{
this.name = name;
}
protected void RaisePropertyChanged(string propertyName)
{
var handler = PropertyChanged;
if (handler != null)
handler.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
public class ViewModel
{
private readonly ObservableCollection<Item> items = new ObservableCollection<Item>(Enumerable.Range(0, 10).Select(p => new Item(p.ToString())));
public ObservableCollection<Item> Items { get { return items; } }
}
public sealed partial class MainPage : Page
{
public MainPage()
{
this.InitializeComponent();
DataContext = new ViewModel();
}
}
XAML:
<StackPanel Orientation="Horizontal">
<ListView ItemsSource="{Binding Path=Items}" SelectionMode="Multiple">
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="IsSelected" Value="{Binding Path=IsSelected, Mode=TwoWay}"/>
</Style>
</ListView.ItemContainerStyle>
</ListView>
<ListView.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=Name}"/>
</DataTemplate>
</ListView.ItemTemplate>
</StackPanel>
Ich bin in der Lage auf die Elemente auf dem Bildschirm klicken, aber die IsSelected Eigenschaft ist nicht auf das Ansichtsmodell propagieren. Irgendwelche Ideen warum?
könnten Sie einen Link? Ich weiß nicht wirklich, wonach ich suchen soll. –
Siehe meine Antwort auf diese Frage: http://stackoverflow.com/questions/11857505/how-do-i-do-bindings-in-itemcontainerstyle-in-winrt –
Ich verwende WinRT Xaml Toolkit-Erweiterungen. Es funktioniert einwandfrei. Danke – vivekp