2012-10-13 4 views
6

मैं इस तरह मेरी WrapGrid की MaximumRowsOrColumns संपत्ति को संशोधित करने के कोशिश कर रहा हूँ:XAML कोड से आइटम्सपेनल टेम्पलेट WrapGrid कैसे बदलें?

<GridView.ItemsPanel> 
    <ItemsPanelTemplate> 
     <WrapGrid x:Name="wrapGridItems" Orientation="Vertical" MaximumRowsOrColumns="1" /> 
    </ItemsPanelTemplate> 
</GridView.ItemsPanel> 

और फिर मैं WrapGrid बदलने के लिए इस कोड का उपयोग कर रहा:

<VisualState x:Name="Snapped"> 
    <Storyboard> 
     <ObjectAnimationUsingKeyFrames Storyboard.TargetName="wrapGridItems" Storyboard.TargetProperty="MaximumRowsOrColumns"> 
      <DiscreteObjectKeyFrame KeyTime="0" Value="-1"/> 
     </ObjectAnimationUsingKeyFrames> 
      <ObjectAnimationUsingKeyFrames Storyboard.TargetName="headerText" Storyboard.TargetProperty="Text"> 
      <DiscreteObjectKeyFrame KeyTime="0" Value="Pins"/> 
     </ObjectAnimationUsingKeyFrames> 
    </Storyboard> 
</VisualState> 

लेकिन मैं हो रही है त्रुटि

WinRT जानकारी: TargetName wrapGridItems को हल नहीं कर सकता।

मैं कैसे ObjectAnimationUsingKeyFrames Storyboard.TargetName संपत्ति में WrapGrid का संदर्भ लेना चाहिए?

उत्तर

4

आप एक्स: नाम का उपयोग कर टेम्पलेट्स के अंदर तत्वों तक नहीं पहुंच सकते हैं। चूंकि टेम्पलेट को तुरंत चालू किया जा सकता है, इसलिए एनीमेशन यह बताने में सक्षम नहीं होगा कि उसे किस तत्व में हेरफेर करना चाहिए।

आप बंधन का उपयोग करना चाहिए आप टेम्पलेट के अंदर तत्व की संपत्ति को बदलने के लिए की जरूरत है:

<GridView.ItemsPanel> 
    <ItemsPanelTemplate> 
     <WrapGrid Orientation="Vertical" MaximumRowsOrColumns="{Binding MyMaxRowsOrCollumns}" /> 
    </ItemsPanelTemplate> 
</GridView.ItemsPanel> 
0

डिजाइन कोड:

<GridView > 

<GridView.ItemsPanel> 
          <ItemsPanelTemplate> 
           <WrapGrid x:Name="wrapGrid" Orientation="Vertical" MaximumRowsOrColumns="{Binding MyMaxRowsOrCollumns}"></WrapGrid> 
          </ItemsPanelTemplate> 
         </GridView.ItemsPanel> 
</GridView > 

सी # कोड:

बनाएं dependancy संपत्ति

public int MyMaxRowsOrCollumns 
    { 
     get { return (int)GetValue(MyMaxRowsOrCollumnsProperty); } 
     set { SetValue(MyMaxRowsOrCollumnsProperty, value); } 
    } 

    // Using a DependencyProperty as the backing store for MyMaxRowsOrCollumns. This enables animation, styling, binding, etc... 
    public static readonly DependencyProperty MyMaxRowsOrCollumnsProperty = 
     DependencyProperty.Register("MyMaxRowsOrCollumns", typeof(int), typeof(DashBord), new PropertyMetadata(2));