2011-07-12 12 views
0

から現在の相続リストビューを取得することができ、私は、リストビューの2つの相続持っている:後ろのコードでWPF:どのように私はDataTemplateを

<Window.Resources> 
     <DataTemplate x:Key="FileListViewTemplate"> 
      <dtc:FileListView/> 
     </DataTemplate> 
     <DataTemplate x:Key="ThumbnailViewTemplate"> 
      <dtc:ThumbnailView/> 
     </DataTemplate> 
    </Window.Resources> 
    <Grid> 
     <CheckBox x:Name="MyCheckBox"> 
     <ContentControl x:Name="MyContentControl" MouseDown="OnContentControlMouseDown"> 
     <DataTemplate> 
      <ContentPresenter x:Name="AudioPresenter" 
          ContentTemplate="{StaticResource FileListTemplate}"/> 
      <DataTemplate.Triggers> 
      <DataTrigger Binding="{Binding ElementName=MyCheckBox, Path=IsChecked}" 
         Value="true"> 
       <Setter TargetName="AudioPresenter" 
         Property="ContentTemplate" 
         Value="{StaticResource ThumbnailViewTemplate}" /> 
      </DataTrigger> 
      </DataTemplate.Triggers> 
     </DataTemplate> 
     </ContentControl> 
    </Grid> 

 public ListView GetCurrentListView() 
    { 
     ListView lv = null; 
     DataTemplate fileListViewTemplate = base.FindResource("FileListViewTemplate") 
              as DataTemplate; 
     DataTemplate thumbnailViewTemplate = base.FindResource("ThumbnailViewTemplate") 
              as DataTemplate; 

     ContentPresenter contentPresenter = VisualTreeHelper.GetChild(this.MyContentControl, 0) 
      as ContentPresenter; 
     try 
     { 
      lv = fileListViewTemplate.FindName("FileListView", contentPresenter) 
      as ListView; 
     } 
     catch (Exception) 
     { 
      lv = thumbnailViewTemplate.FindName("ThumbnailView", contentPresenter) 
      as ListView; 
     } 
     return lv; 
    } 
XAMLで

public class FileListView : ListView 
    public class ThumbnailListView : ListView 

を私は、コードを次しています

CheckBoxが指定されている場合、ThumbnailViewが表示されます。それ以外の場合はFileListViewが表示されます。そして、いつかは、コードの背後にある現在のリストビューを取得したいと考えています。 私は何が間違っていますか?

答えて

0

DataTriggerにValueを指定すると、文字列からブールに「true」を変換するコンバータを使用することができますか?

public sealed class StringToBoolConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     var flag = false; 
     if (value is bool) 
      flag = (bool)value; 
     else 
      if (value is bool?) 
      { 
       var nullable = (bool?)value; 
       flag = nullable.GetValueOrDefault(); 
      } 
     return flag; 
    } 
    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     var back = ((value is String) && (((String)value) == "true")); 
     return back; 
    } 
} 
+0

これは不要です – Swan911

関連する問題