WPF Combobox分配selectedItem

时间:2011-06-30 06:06:08

标签: c# wpf xaml binding combobox

我在WPF中遇到与组合框相关的问题

我的组合框的xaml代码

<ComboBox Name="CertificateComboBox"  Grid.Row="2" Grid.Column="2" VerticalAlignment="Center"  Margin="1,59,0,48" IsEnabled="{Binding SecurityEnabled}"
                            ItemsSource="{Binding CertificatesList}" DisplayMemberPath="CertName" SelectedItem="{Binding Certificate, Mode=TwoWay}" ToolTip="List of SSL certificates. Select a value from the combobox.">
</ComboBox>

CertificatesList是CertificateEntry对象的列表

public class CertificateEntry
{
    public string CertName { get; set; }
    public string CertHash { get; set; }
    public X509Certificate2 certificte {get; set; }
    public CertificateEntry( X509Certificate2 cert)
    {
        certificte = cert;
        if (cert.FriendlyName.Equals(""))
        {
            CertName = cert.Issuer;
        }
        else
        {
            CertName = cert.FriendlyName;
        }
        CertHash = cert.Thumbprint;
    }
    public string ToString()
    {
        return CertName;
    }
}

Property SelectedItem属性是

public CertificateEntry Certificate
    {
        get
        {                
            return _certificate;
        }

        set
        {
            if (_certificate == value) 
                return;

            _certificate = value;
            OnPropertyChanged("Certificate");
        }
    }

我的问题是当我尝试将对象分配给CertificateComboBox.SelectedItem

this.CertificateComboBox.SelectedItem = _certificate;

其中_certificateCertificateEntry对象
它没有取值

在上述调用后的添加监视为“null

this.CertificateComboBox.SelectedItem = null

作业没有发生, 我想将指定的证书显示为组合框中的默认选择值,这不会发生

2 个答案:

答案 0 :(得分:0)

您只能将所选项目设置为ItemsSource中的对象,是这种情况吗?

此致 多米尼克

答案 1 :(得分:0)

我很困惑......

您为组合的所选项目创建了属性Certificate,但您为其分配了SelectedItem属性:

this.CertificateComboBox.SelectedItem = _certificate;

可能_certicate为空。

我认为你只需要做

Certificate = some value

其中某些值是属于您的商品来源的有效CertificateEntry