Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/267.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.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
C# 组合框(WPF)仅在第一次选择时显示选定项,仅在第一次选择后更改文本_C#_Wpf_Mvvm_Combobox_Wpf Controls - Fatal编程技术网

C# 组合框(WPF)仅在第一次选择时显示选定项,仅在第一次选择后更改文本

C# 组合框(WPF)仅在第一次选择时显示选定项,仅在第一次选择后更改文本,c#,wpf,mvvm,combobox,wpf-controls,C#,Wpf,Mvvm,Combobox,Wpf Controls,我必须为wpf应用程序创建以下组合框 对于以下类型 public class Protocol { public int Id {get;set} public string Name {get;set} public int Speed {get;set} public int Security {get;set} } 所以我制作了一个自定义的分级控件,它可以获取图像和一个整数(即速度或安全性)来用图像填充矩形包装。 我为combobox创建了DataTemp

我必须为wpf应用程序创建以下组合框

对于以下类型

public class Protocol
{
    public int Id {get;set}
    public string Name {get;set}
    public int Speed {get;set}
    public int Security {get;set}
}
所以我制作了一个自定义的分级控件,它可以获取图像和一个整数(即速度或安全性)来用图像填充矩形包装。 我为combobox创建了DataTemplate,如下所示

<ComboBox x:Name="pro" IsSynchronizedWithCurrentItem="True" Grid.Row="1" Margin="40,41,50,0"   VerticalAlignment="Top"
                  Style="{StaticResource ProtocolComboBoxStyle}"
                   ItemsSource="{Binding Protocols}" 
                  SelectedItem="{Binding Protocol, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" 
                  Height="29" SelectionChanged="ComboBox_SelectionChanged">
            <ComboBox.ItemTemplate>
                <DataTemplate DataType="{x:Type models:Protocol}">
                    <WrapPanel Orientation="Horizontal">
                        <TextBlock Width="145" Padding="10,2,0,2" x:Name="text" Style="{StaticResource SettingsInactiveTextBlockStyle}" Text="{Binding Name}" HorizontalAlignment="Center"/>
                        <controls:RatingControl FilledImage="pack://application:,,,/SampleApp;component/Resources/Images/Settings/SettingsHome/security_filled.png"
                                                        UnfilledImage="pack://application:,,,/SampleApp;component/Resources/Images/Settings/SettingsHome/security_unfilled.png"
                                                        Rating="{Binding Security}" HorizontalAlignment="Right"/>
                        <controls:RatingControl Margin="5,2,0,0" FilledImage="pack://application:,,,/SampleApp;component/Resources/Images/Settings/SettingsHome/speed_filled.png"
                                                        UnfilledImage="pack://application:,,,/SampleApp;component/Resources/Images/Settings/SettingsHome/speed_unfilled.png"
                                                        Rating="{Binding Speed}" HorizontalAlignment="Right"/>
                    </WrapPanel>
                </DataTemplate>
            </ComboBox.ItemTemplate>
        </ComboBox>

它工作正常,除了在初始选择之后,只有协议的名称在togglebutton中更改,左侧的分级控件没有更改

还要提到的是,选择项目会更改viewmodel中的binded selectedProtocol属性

如果我遗漏了什么,请告诉我?
提前感谢

看起来您的类并没有通知更改(INPC),它在实际项目中是这样做的,我只是在这里编写代码以供参考。我认为通知属性与问题无关,这些属性不会更改,它们只是用于加载评级控件一次