2015-06-22 62 views
0

最近我學會了如何使用VisualStateManager。我能夠創建一個帶點觸發器的自定義切換按鈕。即時通訊有問題現在以編程方式更改模板中的文本框文本。以編程方式更改ControlTemplate中項目的值

之前,我是能夠改變這樣的

 { 
      await App.MobileService.GetTable<UserProfiles>().ToCollectionAsync(); 
      userprofileitems = await UserProfilesTable 
       .Where(user => user.Email == MyApp.App.LoggedinUseremail) 
       .ToCollectionAsync(); 

      Uri ProfilePhotoUri = new Uri(userprofileitems[0].ProfilePhotoURL, UriKind.Absolute); 
      ImageSource imgSource = new BitmapImage(ProfilePhotoUri); 

      UserProfilePhoto.ImageSource = imgSource; 
      UserFirstName.Text = userprofileitems[0].FirstName; 
      UserLastName.Text = userprofileitems[0].LastName; 
     } 

現在我已經設定切換按鈕用的StaticResource指着App.xaml中的風格,自然地停止我的編程代碼無法正常工作的信息。

 <Style x:Key="UserProfileToggleButtonStyle" TargetType="ToggleButton"> 
      <Setter Property="Background" Value="{ThemeResource ToggleButtonBackgroundThemeBrush}"/> 
      <Setter Property="Foreground" Value="{ThemeResource ToggleButtonForegroundThemeBrush}"/> 
      <Setter Property="BorderBrush" Value="{ThemeResource ToggleButtonBorderThemeBrush}"/> 
      <Setter Property="BorderThickness" Value="{ThemeResource ToggleButtonBorderThemeThickness}"/> 
      <Setter Property="Padding" Value="12,4,12,5"/> 
      <Setter Property="HorizontalAlignment" Value="Left"/> 
      <Setter Property="VerticalAlignment" Value="Center"/> 
      <Setter Property="FontFamily" Value="{ThemeResource ContentControlThemeFontFamily}"/> 
      <Setter Property="FontWeight" Value="SemiBold"/> 
      <Setter Property="FontSize" Value="{ThemeResource ControlContentThemeFontSize}"/> 
      <Setter Property="Template"> 
       <Setter.Value> 
        <ControlTemplate TargetType="ToggleButton"> 
         <Grid> 
          <VisualStateManager.VisualStateGroups> 
           <VisualStateGroup x:Name="CommonStates"> 
            <VisualState x:Name="Normal"/> 
            <VisualState x:Name="PointerOver"> 
             <Storyboard> 
              <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="UserBorder1"> 
               <DiscreteObjectKeyFrame KeyTime="0" Value="#FF64C800"/> 
              </ObjectAnimationUsingKeyFrames> 
              <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="UserBorder3"> 
               <DiscreteObjectKeyFrame KeyTime="0" Value="#FF64C800"/> 
              </ObjectAnimationUsingKeyFrames> 
              <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="UserBorder4"> 
               <DiscreteObjectKeyFrame KeyTime="0" Value="#FF64C800"/> 
              </ObjectAnimationUsingKeyFrames> 
             </Storyboard> 
            </VisualState> 
            <VisualState x:Name="Pressed"> 
             <Storyboard> 
              <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="UserBorder1"> 
               <DiscreteObjectKeyFrame KeyTime="0" Value="Blue"/> 
              </ObjectAnimationUsingKeyFrames> 
              <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="UserBorder3"> 
               <DiscreteObjectKeyFrame KeyTime="0" Value="Blue"/> 
              </ObjectAnimationUsingKeyFrames> 
              <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="UserBorder4"> 
               <DiscreteObjectKeyFrame KeyTime="0" Value="Blue"/> 
              </ObjectAnimationUsingKeyFrames> 
              <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="UserFirstName"> 
               <DiscreteObjectKeyFrame KeyTime="0" Value="White"/> 
              </ObjectAnimationUsingKeyFrames> 
              <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="UserLastName"> 
               <DiscreteObjectKeyFrame KeyTime="0" Value="White"/> 
              </ObjectAnimationUsingKeyFrames> 
             </Storyboard> 
            </VisualState> 
            <VisualState x:Name="Checked"> 
             <Storyboard> 
              <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="UserBorder1"> 
               <DiscreteObjectKeyFrame KeyTime="0" Value="Blue"/> 
              </ObjectAnimationUsingKeyFrames> 
              <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="UserBorder3"> 
               <DiscreteObjectKeyFrame KeyTime="0" Value="Blue"/> 
              </ObjectAnimationUsingKeyFrames> 
              <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="UserBorder4"> 
               <DiscreteObjectKeyFrame KeyTime="0" Value="Blue"/> 
              </ObjectAnimationUsingKeyFrames> 
              <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="UserFirstName"> 
               <DiscreteObjectKeyFrame KeyTime="0" Value="White"/> 
              </ObjectAnimationUsingKeyFrames> 
              <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="UserLastName"> 
               <DiscreteObjectKeyFrame KeyTime="0" Value="White"/> 
              </ObjectAnimationUsingKeyFrames> 
             </Storyboard> 
            </VisualState> 
            <VisualState x:Name="CheckedPointerOver"> 
             <Storyboard> 
              <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="UserBorder1"> 
               <DiscreteObjectKeyFrame KeyTime="0" Value="Blue"/> 
              </ObjectAnimationUsingKeyFrames> 
              <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="UserBorder3"> 
               <DiscreteObjectKeyFrame KeyTime="0" Value="Blue"/> 
              </ObjectAnimationUsingKeyFrames> 
              <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="UserBorder4"> 
               <DiscreteObjectKeyFrame KeyTime="0" Value="Blue"/> 
              </ObjectAnimationUsingKeyFrames> 
              <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="UserFirstName"> 
               <DiscreteObjectKeyFrame KeyTime="0" Value="White"/> 
              </ObjectAnimationUsingKeyFrames> 
              <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="UserLastName"> 
               <DiscreteObjectKeyFrame KeyTime="0" Value="White"/> 
              </ObjectAnimationUsingKeyFrames> 
             </Storyboard> 
            </VisualState> 
            <VisualState x:Name="CheckedPressed"> 
             <Storyboard> 
              <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="UserBorder1"> 
               <DiscreteObjectKeyFrame KeyTime="0" Value="Blue"/> 
              </ObjectAnimationUsingKeyFrames> 
              <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="UserBorder3"> 
               <DiscreteObjectKeyFrame KeyTime="0" Value="Blue"/> 
              </ObjectAnimationUsingKeyFrames> 
              <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="UserBorder4"> 
               <DiscreteObjectKeyFrame KeyTime="0" Value="Blue"/> 
              </ObjectAnimationUsingKeyFrames> 
              <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="UserFirstName"> 
               <DiscreteObjectKeyFrame KeyTime="0" Value="White"/> 
              </ObjectAnimationUsingKeyFrames> 
              <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="UserLastName"> 
               <DiscreteObjectKeyFrame KeyTime="0" Value="White"/> 
              </ObjectAnimationUsingKeyFrames> 
             </Storyboard> 
            </VisualState> 
           </VisualStateGroup> 
          </VisualStateManager.VisualStateGroups> 
          <StackPanel Orientation="Horizontal"> 
           <Grid> 
            <Border x:Name="UserBorder1" BorderBrush="Black" BorderThickness="2,2,0,2" CornerRadius="150,0,0,200" Padding="0" Margin="15,0,0,0"/> 
            <Border BorderBrush="Black" Background="White" BorderThickness="2" CornerRadius="150" Height="40" Width="40" VerticalAlignment="Top"/> 
            <Border x:Name="UserBorder2" BorderBrush="Black" BorderThickness="2" CornerRadius="150" Height="40" Width="40" VerticalAlignment="Top"> 
             <Border.Background> 
              <ImageBrush x:Name="UserProfilePhoto" ImageSource="{Binding ProfilePhotoURL}" Stretch="UniformToFill"/> 
             </Border.Background> 
            </Border> 
           </Grid> 
           <Border x:Name="UserBorder3" BorderBrush="Black" BorderThickness="0,2,0,2" MinWidth="120"> 
            <StackPanel> 
             <TextBlock x:Name="UserFirstName" Text="{Binding FirstName}" FontSize="20" HorizontalAlignment="Center"/> 
             <TextBlock x:Name="UserLastName" Text="{Binding LastName}" FontSize="20" HorizontalAlignment="Center" Margin="0,0,0,10"/> 
            </StackPanel> 
           </Border> 
           <Grid> 
            <Border x:Name="UserBorder4" BorderBrush="Black" BorderThickness="0,2,2,2" CornerRadius="0,150,150,0" Margin="0,0,15,0"/> 
            <Border x:Name="UserSettingsBorder" BorderBrush="Black" Background="White" BorderThickness="0" CornerRadius="150" Height="40" Width="40" VerticalAlignment="Top"/> 
            <Border BorderBrush="Black" BorderThickness="2" CornerRadius="150" Height="40" Width="40" VerticalAlignment="Top"> 
             <Border.Background> 
              <ImageBrush ImageSource="Assets/SettingsIcon.png"/> 
             </Border.Background> 
            </Border> 
           </Grid> 
          </StackPanel> 
         </Grid> 
        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 
     </Style> 

是否有無法通過編程方式訪問和設置信息風格。

回答

0

我最終自己找出了這個問題。我學會了如何創建自定義控件並創建一個從ToggleButton繼承的控件。我能夠創建自定義的依賴項屬性來綁定圖像和文本刺繡。

相關問題