我以前在窗口中有一个非常奇怪的控件来调整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; (这是我在视图模型中加载的默认字体大小),无论我从下拉列表中选择哪个大小。
我想首先显示当前的字体大小,然后我想让它实际调整字体大小。
答案 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}"