将ComboBox绑定到字体大小

时间:2014-06-10 17:59:54

标签: wpf combobox

我以前在窗口中有一个非常奇怪的控件来调整DataGrid的字体大小。它是Slider连接到显示当前字体大小的TextBox。如果我移动Slider,则DataGrid上的字体大小会调整。

<TextBox Text="{Binding Path=FontSize}"/>
<Slider Minimum="12" LargeChange="4" SmallChange="4"
        Interval="15" Maximum="28" Value="{Binding Path=FontSize}"/>

我想用ComboBox替换它,它具有不同的字体大小选项,但是以相同的方式工作。

假设上述情况有效,我将如何进行ComboBox替换?

这就是我的尝试:

<ComboBox MinWidth="40" Margin="11,0,0,0"
          IsEditable="True" 
          SelectedItem="{Binding Path=FontSize}"
          DisplayMemberPath="FontSize">                          
    <ComboBoxItem Content="12"/>
    <ComboBoxItem Content="14"/>
    <ComboBoxItem Content="16"/>
    <ComboBoxItem Content="18"/>
    <ComboBoxItem Content="20"/>
    <ComboBoxItem Content="22"/>
    <ComboBoxItem Content="24"/>
    <ComboBoxItem Content="26"/>
    <ComboBoxItem Content="28"/>
</ComboBox>

但这只是以空白显示的项目开始,然后显示&#34; 12&#34; (这是我在视图模型中加载的默认字体大小),无论我从下拉列表中选择哪个大小。

我想首先显示当前的字体大小,然后我想让它实际调整字体大小。

2 个答案:

答案 0 :(得分:1)

问题是SelectedItem正在向FontSize发送一个ComboBoxItem,它期望一个整数。

<ComboBox Name="FontSizeComboBox" IsEditable="True" 
          SelectedItem="{Binding Path=FontSize}">
     <ComboBox.ItemsSource>
          <x:Array Type="{x:Type System:Int32}">
              <System:Int32>12</System:Int32>
              <System:Int32>14</System:Int32>
              <System:Int32>16</System:Int32>
              <System:Int32>18</System:Int32>
              <System:Int32>20</System:Int32>
              <System:Int32>22</System:Int32>
              <System:Int32>24</System:Int32>
              <System:Int32>26</System:Int32>
              <System:Int32>28</System:Int32>
          </x:Array>
     </ComboBox.ItemsSource>
</ComboBox>

我需要将以下命名空间添加到我的UserControl:

xmlns:System="clr-namespace:System;assembly=mscorlib"

我仍然有兴趣知道如何以编程方式设置字体大小列表。我的所有尝试都只是显示了一个空白下拉列表。

答案 1 :(得分:0)

尝试更换:

SelectedItem="{Binding Path=FontSize}"

SelectedValue="{Binding Path=FontSize}"