2013-11-29 6 views
1

Я хочу установить свойство width окна в зависимости от значения свойства ViewModel. Во-первых у меня есть ContentControl: WPF DataTrigger для установки свойства Width Window

, а затем:

<DataTemplate DataType="{x:Type massedit:SimpleFieldVM}"> 
     <ContentControl Content="{Binding .}"> 
      <ContentControl.Style> 
       <Style TargetType="{x:Type ContentControl}"> 
        <Setter Property="ContentTemplate" Value="{StaticResource DefaultTemplate}" /> 
        <Style.Triggers> 
         <!-- Without selector, only with DataTriggers select my ContentControl --> 
         <DataTrigger Binding="{Binding TargetFieldType}" Value="{x:Static eva:FieldDataType.ENum}"> 
          <Setter Property="ContentTemplate" Value="{StaticResource ComboboxEnumTemplate}" /> 
          <Setter Property="Width" Value="100"></Setter> 
         </DataTrigger> 
         <DataTrigger Binding="{Binding TargetFieldType}" Value="{x:Static eva:FieldDataType.List}"> 
          <Setter Property="ContentTemplate" Value="{StaticResource ComboboxListTemplate}" /> 
          <Setter Property="Width" Value="100"></Setter> 
         </DataTrigger> 
         <DataTrigger Binding="{Binding TargetFieldType}" Value="{x:Static eva:FieldDataType.Bit}"> 
          <Setter Property="ContentTemplate" Value="{StaticResource BitTemplate}" /> 
          <Setter Property="Width" Value="100"></Setter> 
         </DataTrigger> 
         <DataTrigger Binding="{Binding TargetFieldType}" Value="{x:Static eva:FieldDataType.Date}"> 
          <Setter Property="ContentTemplate" Value="{StaticResource DateTemplate}" /> 
          <Setter Property="Width" Value="150"></Setter> 
         </DataTrigger> 
         <DataTrigger Binding="{Binding TargetFieldType}" Value="{x:Static eva:FieldDataType.DatTime}"> 
          <Setter Property="ContentTemplate" Value="{StaticResource DatTimeTemplate}" /> 
          <Setter Property="Width" Value="150"></Setter> 
         </DataTrigger> 
         <DataTrigger Binding="{Binding TargetFieldType}" Value="{x:Static eva:FieldDataType.Time}"> 
          <Setter Property="ContentTemplate" Value="{StaticResource TimeTemplate}" /> 
          <Setter Property="Width" Value="50"></Setter> 
         </DataTrigger> 
        </Style.Triggers> 
       </Style> 
      </ContentControl.Style> 
     </ContentControl> 
    </DataTemplate> 

Но изменить свойство Width моего ContentControl. Я хочу изменить свойство Width of the Window!

ответ

2

Вы можете связать Window.Width напрямую или использовать свойство FitToContent.

http://msdn.microsoft.com/en-us/library/vstudio/ms743733%28v=vs.100%29.aspx

FitToContent будет пытаться соответствовать Окно своему содержанию означает, что если вам удастся установить содержание до нужного размера окна будет следовать. :)

+0

Он работает, спасибо! – MrScf

Смежные вопросы