我有以下代码,在更改后调用ComboBox
:
private void ComboBox_Selected(object sender, RoutedEventArgs e)
{
ComboBox cb = (ComboBox)sender;
TextBlock tx = (TextBlock)cb.SelectedItem;
string shir = tx.Text;
Properties.Settings.Default.Shir1 = shir;
Properties.Settings.Default.Save();
MessageBox.Show(shir);
}
变量shir
出来为空
这是我的 XAML 代码:
<ComboBox x:Name="combobox" SelectionChanged="ComboBox_Selected" SelectedIndex="0" Style="{Binding}" HorizontalAlignment="Left" Margin="73,139,0,0" VerticalAlignment="Top" Width="127" Height="23" Foreground="Black" BorderBrush="{x:Null}" Background="{x:Null}">
<TextBlock><Run Text="800x600"/></TextBlock>
<TextBlock><Run Text="1024x780"/></TextBlock>
<TextBlock><Run Text="1280x768"/></TextBlock>
<TextBlock><Run Text="1440x900"/></TextBlock>
<TextBlock><Run Text="1536x1024"/></TextBlock>
<TextBlock><Run Text="1600x900"/></TextBlock>
<TextBlock><Run Text="1920x1080"/></TextBlock>
<TextBlock><Run Text="2048x1080"/></TextBlock>
<TextBlock><Run Text="2560x1600"/></TextBlock>
</ComboBox>
如果您完全解决了您设置的任务并回答了“为什么值为空”的问题,那么重点是您不明白为什么
<TextBlock>
还要在内部使用<Run>
,现在想想,您有这样的层次结构:这段代码会给你什么?
我想你明白你的问题。让我们现在决定。你有两个选择:
拒绝
<Run>
(对你来说真的是多余的)。从中获取文本。它是这样完成的:
但我再重复一遍:开发 WPF 项目的方式是最糟糕的方法,因为您自己正在通过这些操作赚取佣金。从项目中删除所有内容
x:Name
(样式除外)并尝试像这样设计它。想象一下,你有一个简单的控制台项目,你只用类操作,而不用接口,所以首先开发这些层,然后才考虑如何将 UI 附加到它上面,你不会相信的,用在绑定和其他 WPF 工具的帮助下,UI 可以(并且应该)与逻辑完全分离(我们阅读了 MVVM)!所以我给你的建议是忘记你现在在做什么,开始学习绑定(有很多例子,即使他们给了你答案)。