C#WPF如何通过组合框选择来改变帧源?

时间:2014-12-01 13:12:16

标签: c# wpf xaml combobox frame

其他程序员,

我有一个组合框,在我的XAML中有一个框架。 但是,当组合框列表中的选定值与默认值不同时,我希望能够更改帧的来源。

CODE:

XAML

    <DockPanel>
        <Frame x:Name="comboFrame" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" Width="Auto" Height="Auto" Source="pan.xaml"/>
    </DockPanel>

组合框

    <ComboBox x:Name="NumberBox" HorizontalAlignment="Left" Height="20" Margin="160,74,0,0" VerticalAlignment="Top" Width="40" SelectionChanged="ComboBox_SelectionChanged_1" ItemsSource="{Binding elements, BindsDirectlyToSource=True, StringFormat=\{0:X\}}" BorderThickness="0">

        <ComboBoxItem Content="3"/>
        <ComboBoxItem Content="4"/>
        <ComboBoxItem Content="5"/>
        <ComboBoxItem Content="6"/>
        <ComboBoxItem Content="7"/>
        <ComboBoxItem Content="8"/>   

    </ComboBox>

C#

    private void ComboBox_SelectionChanged_1(object sender, SelectionChangedEventArgs e)

    {

        string stX = Convert.ToString(NumberBox.SelectedItem);

        comboFrame.Navigate(new Uri("pan.xaml", UriKind.Relative));

        if (stX == "3")
        {

            comboFrame.Navigate(new Uri("pan1.xaml", UriKind.Relative));

        }

    }

总之 - 我希望能够在组合框中更改选择框架的来源,不同于2。默认源是pan.xaml,它是选择2。 基本上取决于数量。面板都包含其他组合框。 面板包含2个CB(组合框),第1组包含3个CB等,直到面板6包含8个CB。

提前致谢。

1 个答案:

答案 0 :(得分:0)

我设法解决了。

新代码:

XAML - 为内容添加名称;

    <ComboBox x:Name="NumberBox" HorizontalAlignment="Left" Height="20" Margin="160,74,0,0" VerticalAlignment="Top" Width="40" SelectionChanged="ComboBox_SelectionChanged_1" ItemsSource="{Binding elements, BindsDirectlyToSource=True, StringFormat=\{0:X\}}" BorderThickness="0">

        <ComboBoxItem Name="TwoBoxItem" Content="2"/>
        <ComboBoxItem Name="ThreeBoxItem" Content="3"/>
        <ComboBoxItem Name="FourBoxItem" Content="4"/>
        <ComboBoxItem Name="FiveBoxItem" Content="5"/>
        <ComboBoxItem Name="SixBoxItem" Content="6"/>
        <ComboBoxItem Name="SevenBoxItem" Content="7"/>
        <ComboBoxItem Name="EightBoxItem" Content="8"/>

    </ComboBox>

C# - 使用XAML内容名称,检查选择是否等于它,然后使用dispatcher.invoke将帧重定向到具有相关组合框数的页面的URL。

    private void ComboBox_SelectionChanged_1(object sender, SelectionChangedEventArgs e)
    {

        Uri oneX = new Uri("pan.xaml", UriKind.Relative);

        if (NumberBox.SelectedItem == TwoBoxItem)
        {

            comboFrame.Dispatcher.Invoke(delegate
            {

                comboFrame.Source = oneX;

            }

            );

        }

感谢所有人的回答,我希望这有助于某人。