W obiekcie ListBox
mam właściwość ItemContainer o wartości IsSelected
powiązana z moją właściwością ViewModel o wartości IsSelected
przy użyciu składni <ListBox.ItemContainerStyle>
.Podaj typ datakonteksu w polu listy Element Kontener w stylu
To działa dobrze, ale pojawia się ostrzeżenie Resharper:
Cannot resolve property 'IsSelected' in data context of type "FooSolution.BarViewModel".
Jak określić typ określić DataContext na ListBox ItemContainer, aby pozbyć się tego ostrzeżenia?
Oto kod. Mam BarViewModel
Klasa:
public ObservableCollection<FooViewModel> FooItems { get;set; }
BarViewModel
przypisany do DataContext w kontroli zawierającej ListBox
i FooViewModel
następująco:
public bool IsSelected
{
get
{
return isSelected;
}
set
{
if (isSelected == value)
{
return;
}
isSelected = value;
RaisePropertyChanged(() => IsSelected);
}
}
i XAML tak:
<ListBox ItemsSource="{Binding FooItems}" SelectionMode="Multiple">
<ListBox.ItemContainerStyle>
<Style TargetType="{x:Type ListBoxItem}">
<Setter Property="IsSelected" Value="{Binding IsSelected}" />
</Style>
</ListBox.ItemContainerStyle>
</ListBox>
Aktualizacja Próbowałem ustawienie d:DataContext
użyciu setter, jak sugeruje HighCore, ale niestety, to nie pomaga, a nawet łamie build:
<Setter Property="d:DataContext" Value="{d:DesignInstance yourxmlns:yourItemViewModelClass}"/>
(Zgłasza: Błąd 1 Tag 'DesignInstance' nie istnieje w przestrzeni nazw XML "schemas.microsoft.com/expression/blend/2008" ;. Linia 31 pozycja 50.)
Aktualizacja 2 Finaly, rozwiązaniem jest ustawienie d:DataContext
temat samego elementu stylu (patrz moja odpowiedź ryk):
<ListBox.ItemContainerStyle>
<Style TargetType="{x:Type ListBoxItem}" d:DataContext="{d:DesignInstance local:FooViewModel }">
<Setter Property="IsSelected" Value="{Binding IsSelected}" />
</Style>
+1 Obaj nauczyliśmy się czegoś dzisiaj =) –
Pojawia się następujący błąd: Właściwość "DataContext" nie można dołączyć do elementów typu "Styl". ¿? ¿? ¿ –
@somos, jesteś pewien, że używasz d: DataContext z blend SDK (jest to specjalny dołączony podpór by pozwolić projektantowi wiedzieć o typie VM w czasie projektowania) – Isantipov