«Представление не может быть совместно использовано более чем одним ListView» Ошибка Wpf - PullRequest
0 голосов
/ 10 марта 2010

Что не так с этим кодом? Выдает исключение: «Представление не может совместно использоваться более чем одним ListView»

<ListView 
    ItemsSource="{Binding}"  
    SelectionMode="Extended">
 <ListView.Style>

  <Style TargetType="ListView">   
   <Style.Triggers>
    <DataTrigger Binding="{Binding ElementName=MyControl, Path=IsCompany}" Value="True">
     <Setter Property="View" Value="{StaticResource GridViewCompanies}" />
    </DataTrigger>
    <DataTrigger Binding="{Binding ElementName=MyControl, Path=IsCompany}" Value="False">
     <Setter Property="View" Value="{StaticResource GridViewPeople}" />
    </DataTrigger>
    <DataTrigger Binding="{Binding ElementName=MyControl, Path=IsCompany}" Value="{x:Null}">
     <Setter Property="View" Value="{StaticResource GridViewBoth}" />
    </DataTrigger>
   </Style.Triggers>
  </Style>

 </ListView.Style>          
</ListView>

public bool? IsCompany
{
 get { return (bool?)GetValue(IsCompanyProperty); }
 set { SetValue(IsCompanyProperty, value); }
}        
public static readonly DependencyProperty IsCompanyProperty =
 DependencyProperty.Register("IsCompany", typeof(bool?), typeof(MyControl), new UIPropertyMetadata(null));

РЕДАКТИРОВАНИЕ:

Я попытался установить View в коде, и это работает. Что за проблема с XAML?

if() ..
MyListView.View = Resources["GridViewCompanies"] as GridView;

1 Ответ

0 голосов
/ 10 марта 2010

Ошибка в том, что GridView применяется более чем к одному ListView. Ваш стиль ListView применяется к нескольким элементам управления? Я посмотрел в Reflector, и похоже, что этот сценарий должен работать для одного элемента управления.

Что именно вы пытаетесь достичь? Я полагаю, вы просто хотите показать разные столбцы. Возможно, вы можете создать присоединенное поведение для генерации столбцов для GridView в зависимости от значения свойства, к которому вы привязываете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...