WPF之绑定

绑定字体:

  <Window.Resources>
    <FontFamily x:Key="CustomFont">Calibri</FontFamily>
  </Window.Resources>
  
    <StackPanel Margin="10" DataContext="{x:Static SystemFonts.IconFontFamily}">
      <TextBlock Margin="5" Text="{Binding Path=Source}"></TextBlock>
      <TextBlock Margin="5" Text="{Binding Source={x:Static SystemFonts.IconFontFamily}, Path=LineSpacing}"></TextBlock>
      <TextBlock Margin="5" Text="{Binding Source={x:Static SystemFonts.IconFontFamily}, Path=FamilyTypefaces[0].Style}"></TextBlock>
      <TextBlock Margin="5" Text="{Binding Source={x:Static SystemFonts.IconFontFamily}, Path=FamilyTypefaces[0].Weight}"></TextBlock>

      <TextBlock Margin="5" Text="{Binding Source={StaticResource CustomFont}, Path=Source}"></TextBlock>
    </StackPanel>

元素之间绑定:

  <StackPanel Margin="5">

    <Slider Name="sliderFontSize" Margin="3" Minimum="1" Maximum="40" Value="10" TickFrequency="1" IsSnapToTickEnabled="True" TickPlacement="TopLeft"></Slider>

    
    <TextBlock Margin="10" Name="lblSampleText" 
           FontSize="{Binding ElementName=sliderFontSize, Path=Value, Mode=TwoWay}"
           Text="Simple Text">
    </TextBlock>

    <StackPanel Orientation="Horizontal" >
      <Button Margin="5" Padding="3" Click="cmd_SetSmall">Set to Small</Button>
      <Button Margin="5" Padding="3" Click="cmd_SetNormal">Set to Normal</Button>
      <Button Margin="5" Padding="3" Click="cmd_SetLarge">Set to Large</Button>
    </StackPanel>

    <StackPanel Orientation="Horizontal" Margin="5">
      <TextBlock VerticalAlignment="Center" xml:space="preserve">Exact Size:  </TextBlock>
      <TextBox Name="txtBound" Text="{Binding ElementName=lblSampleText, Path=FontSize, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay, Delay=500}" Width="100"></TextBox>
    </StackPanel>

        <Button Margin="5" Padding="3" HorizontalAlignment="Left" Click="cmd_GetBoundObject">Get Bound Object</Button>
    </StackPanel>
        private void cmd_SetSmall(object sender, RoutedEventArgs e)
        {
            sliderFontSize.Value = 2;
        }

        private void cmd_SetNormal(object sender, RoutedEventArgs e)
        {
            sliderFontSize.Value = this.FontSize;
        }

        private void cmd_SetLarge(object sender, RoutedEventArgs e)
        {
            // Only works in two-way mode.
            lblSampleText.FontSize = 30;
             
        }

        private void cmd_GetBoundObject(object sender, RoutedEventArgs e)
        {
            Binding binding = BindingOperations.GetBinding(txtBound, TextBox.TextProperty);
            MessageBox.Show("Bound " + binding.Path.Path + " to source element " + binding.ElementName);

            BindingExpression expression = BindingOperations.GetBindingExpression(txtBound, TextBox.TextProperty);
            MessageBox.Show("Bound " + expression.ResolvedSourcePropertyName + " with data " + ((TextBlock)expression.ResolvedSource).FontSize);
        }

字体选择器:

  <Grid>
    <Grid.RowDefinitions>
      <RowDefinition Height="2*"></RowDefinition>
      <RowDefinition Height="*"></RowDefinition>
    </Grid.RowDefinitions>
    <ListBox Grid.Row="0" ItemsSource="{x:Static Fonts.SystemFontFamilies}" Margin="5" Name="lstFonts"/>

    <Grid Grid.Row="1"  Margin="5">
      <TextBox  
           FontFamily="{Binding ElementName=lstFonts, Path=SelectedItem}"
           TextAlignment="Center" TextWrapping="Wrap">
        The quick brown fox jumps over the lazy dog
      </TextBox>
    </Grid>
  </Grid>

多绑定:

  <Grid Margin="5">
    <Grid.RowDefinitions>
      <RowDefinition Height="Auto"></RowDefinition>
      <RowDefinition Height="Auto"></RowDefinition>
      <RowDefinition Height="Auto"></RowDefinition>
      <RowDefinition Height="Auto"></RowDefinition>
      <RowDefinition></RowDefinition>
    </Grid.RowDefinitions>
    
    <Slider Name="sliderFontSize" Margin="3" Minimum="1" Maximum="40" Value="10"></Slider>      
    
    <TextBox Name="txtContent" Margin="3" Grid.Row="2">Sample Content</TextBox>

    <ListBox Margin="3" Grid.Row="3" Name="lstColors">
      <ListBoxItem Tag="Blue">Blue</ListBoxItem>
      <ListBoxItem Tag="DarkBlue">Dark Blue</ListBoxItem>
      <ListBoxItem Tag="LightBlue">Light Blue</ListBoxItem>
    </ListBox>
    
    <TextBlock Margin="3" Name="lblSampleText" 
           FontSize="{Binding ElementName=sliderFontSize, Path=Value}"  Grid.Row="4"
           Text="{Binding ElementName=txtContent, Path=Text}"           
           Foreground="{Binding ElementName=lstColors, Path=SelectedItem.Tag}"
           >      
    </TextBlock>
    
  </Grid>



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值