8

1 ~ 8 の数字のコンボボックスが必要で、選択した値を int 型のプロパティ「NumberOfZones」にバインドします。デフォルトでは、コンボボックスは文字列値を返すため、これを int プロパティに保存することはできません。int にキャストする方法を教えてください。

アイテムを設定してintで選択するにはどうすればよいですか。

   <ComboBox Background="#FFB7B39D" Height="23" Name="cboNumZones" Width="74" Margin="158,16,368,247" Grid.Row="2" SelectionChanged="cboNumZones_SelectionChanged" 
    SelectedValue="{Binding Path=NumberOfZones, Mode=TwoWay}">
   </ComboBox>
                <!--
                <ComboBoxItem >1</ComboBoxItem>
                    <ComboBoxItem >2</ComboBoxItem>
                    <ComboBoxItem >3</ComboBoxItem>
                    <ComboBoxItem >4</ComboBoxItem>
                    <ComboBoxItem >5</ComboBoxItem>
                    <ComboBoxItem >6</ComboBoxItem>
                    <ComboBoxItem >7</ComboBoxItem>
                    <ComboBoxItem >8</ComboBoxItem>
                -->

NumberOfZones プロパティを含むオブジェクトは、UserControl の DataContext です。

大変感謝します。

4

3 に答える 3

18

ItemsSourceint の配列として設定すると、次のタイプSelectedItemになります。int32

<ComboBox SelectedItem="{Binding Path=NumberOfZones, Mode=TwoWay}">             
   <ComboBox.ItemsSource>
      <x:Array Type="{x:Type sys:Int32}">
         <sys:Int32>1</sys:Int32>
         <sys:Int32>2</sys:Int32>
         <sys:Int32>3</sys:Int32>
         <sys:Int32>4</sys:Int32>
         <sys:Int32>5</sys:Int32>
         <sys:Int32>6</sys:Int32>
         <sys:Int32>7</sys:Int32>
         <sys:Int32>8</sys:Int32>
      </x:Array>
   </ComboBox.ItemsSource>
</ComboBox>

sys:このためには、XAML に名前空間を追加する必要があります。

xmlns:sys="clr-namespace:System;assembly=mscorlib"
于 2013-08-29T11:22:26.450 に答える
3

質問が WPF に関するものであることは承知していますが、Windows 8.1 (WinRT、ユニバーサル アプリ) で回答を探している場合は、次のようになります。

<ComboBox SelectedItem="{Binding NumberOfZones, Mode=TwoWay}">
    <x:Int32>1</x:Int32>
    <x:Int32>2</x:Int32>
    <x:Int32>3</x:Int32>
    <x:Int32>4</x:Int32>
    <x:Int32>5</x:Int32>
</ComboBox>

とすれば

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
于 2015-06-01T06:00:23.440 に答える