2016-09-25 30 views
0

我有一個ScrollViewerWidth屬性綁定到另一個頁面元素。我只想對某些AdaptiveTrigger MinWindowWidth如何設置ScrollViewer的寬度綁定到一個頁面元素ActualWidth在AdaptiveTrigger UWP

<ScrollViewer x:Name="scrollViewerEditor" Width="{Binding ElementName=stackPanelSearch, Path=ActualWidth}"> 
    ... 
</ScrollViewer> 

我要放置在WidthAdaptiveTrigger下面結合應用此。什麼是正確的方法來做到這一點?

<VisualState x:Name="VisualStateWide"> 
    <VisualState.StateTriggers> 
     <AdaptiveTrigger MinWindowWidth="{StaticResource WideMinWidth}" /> 
    </VisualState.StateTriggers> 
    <VisualState.Setters> 
     <Setter Target="scrollViewerEditor.(FrameworkElement.Width)" Value="Binding ElementName=stackPanelSearch, Path=ActualWidth}" /> 

回答

0

如果你不介意做在後面的代碼這項工作,有解決這個問題的一個簡單的方法,用​​例如像這樣:

<VisualStateManager.VisualStateGroups> 
    <VisualStateGroup CurrentStateChanged="VisualStateGroup_CurrentStateChanged"> 
     <VisualState x:Name="VisualStateNarrow"> 
      <VisualState.StateTriggers> 
       <AdaptiveTrigger MinWindowWidth="0" /> 
      </VisualState.StateTriggers> 
      <VisualState.Setters> 
       <Setter Target="scrollViewerEditor.Style" Value="{StaticResource ScrollViewerStyle1}" /> 
      </VisualState.Setters> 
     </VisualState> 
     <VisualState x:Name="VisualStateWide"> 
      <VisualState.StateTriggers> 
       <AdaptiveTrigger MinWindowWidth="720" /> 
      </VisualState.StateTriggers> 
      <VisualState.Setters> 
       <Setter Target="scrollViewerEditor.Style" Value="{StaticResource ScrollViewerStyle2}" /> 
      </VisualState.Setters> 
     </VisualState> 
    </VisualStateGroup> 
</VisualStateManager.VisualStateGroups> 

在後面的代碼:

private void VisualStateGroup_CurrentStateChanged(object sender, VisualStateChangedEventArgs e) 
{ 
    var state = e.NewState; 
    if (state.Name == "VisualStateNarrow") 
    { 
     scrollViewerEditor.Width = 300; 
    } 
    else 
    { 
     if (tb.ActualWidth != 0) 
      scrollViewerEditor.Width = tb.ActualWidth; 
     else 
      scrollViewerEditor.Width = 600; 
    } 
} 

不允許使用數據Setter來解決這個問題的正確方法結合,通常是創建一個自定義AttachedPropertyScrollViewer並將此附加屬性綁定到WidthProperty,但對VisualState內的自定義附加屬性的支持不是很理想,我會繼續研究這一點,看看它是否適用於自定義AttachedProperty

+0

理想的綁定在setter(x:綁定例如)中運行,自己也跑到這個 – Depechie

+0

@Depechie,據我所知,x:綁定也不能在setter中工作,我嘗試了很多,似乎這裏的AttachedProperty無法正常工作... –

相關問題