Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
wpf c#更改选定选项卡中的元素_C#_Wpf_Xaml - Fatal编程技术网

wpf c#更改选定选项卡中的元素

wpf c#更改选定选项卡中的元素,c#,wpf,xaml,C#,Wpf,Xaml,我有一个如下的XAML代码: <Grid x:Name="LayoutRoot"> <TabControl Margin="0,53,0,0"> <TabItem Header="First"> <Grid Background="#FFE5E5E5"> <TextBlock /> </Grid> </Tab

我有一个如下的XAML代码:

<Grid x:Name="LayoutRoot">
    <TabControl Margin="0,53,0,0">
        <TabItem Header="First">
            <Grid Background="#FFE5E5E5">
            <TextBlock />
            </Grid>
        </TabItem>
        <TabItem Header="Second" >
            <Grid Background="#FFE5E5E5">
            <TextBlock />
            </Grid>
        </TabItem>
        <TabItem Header="Third">
            <Grid Background="#FFE5E5E5">
            <TextBlock />
            </Grid>
        </TabItem>
    </TabControl>
    <Button Content="Button" HorizontalAlignment="Right" Margin="0,8,174,0" VerticalAlignment="Top" Width="75"/>
    <TextBox Height="20.96" Margin="30,9,267,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top"/>
</Grid>

使用C#在每个选项卡项中都有一个文本块 如果我在文本框中键入内容,然后单击按钮,现在选择的选项卡项是“第三个” 请帮助我现在如何更改所选选项卡项中的文本块? 是的,文本框和按钮位于选项卡外部。这里是:

<Grid x:Name="LayoutRoot">
    <TabControl Margin="0,53,0,0" Name="tabControl">
        <TabItem Header="First">
            <Grid Background="#FFE5E5E5">
                <TextBlock />
            </Grid>
        </TabItem>
        <TabItem Header="Second" >
            <Grid Background="#FFE5E5E5">
                <TextBlock />
            </Grid>
        </TabItem>
        <TabItem Header="Third">
            <Grid Background="#FFE5E5E5">
                <TextBlock />
            </Grid>
        </TabItem>
    </TabControl>
    <Button Content="Button" HorizontalAlignment="Right" Margin="0,8,174,0" VerticalAlignment="Top" Width="75" Click="Button_Click"/>
    <TextBox Height="20.96" Margin="30,9,267,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Name="textBox"/>
</Grid>

支持代码:

private void Button_Click(object sender, RoutedEventArgs e)
{
    var match = tabControl.Items.OfType<TabItem>().Where(tab => tab.Header.ToString() == textBox.Text).FirstOrDefault();
    if (match != null) match.IsSelected = true;
}
private void按钮\u单击(对象发送者,路由目标)
{
var match=tabControl.Items.OfType().Where(tab=>tab.Header.ToString()==textBox.Text).FirstOrDefault();
如果(match!=null)match.IsSelected=true;
}
希望我没弄错

更新 看起来我第一次就不明白你的意思。以下是您案例的正确支持代码:

private void Button_Click(object sender, RoutedEventArgs e)
{
    tabControl.Items.OfType<TabItem>().Where(tab => tab.IsSelected == true).First().Header = textBox.Text;
}
private void按钮\u单击(对象发送者,路由目标)
{
tabControl.Items.OfType().Where(tab=>tab.IsSelected==true.First().Header=textBox.Text;
}

如果您单击按钮,则不会发生任何事情-您没有连接到按钮的行为。你想让事情发生吗?而且,内容在标签之外。。。所以很明显,改变标签不会改变内容。为什么你认为它在外面?这不是我回答中的错误代码。当您点击按钮时,它会将所选选项卡的标题文本更改为文本框中的当前文本。