【问题标题】:Combobox default value for new item新项目的组合框默认值
【发布时间】:2016-03-15 12:19:01
【问题描述】:

我有 2 个组合框,它的 itemssource 绑定到列表视图中的 2 个列表。这一切都很好,但是当我向列表中添加一个新的新项目时,组合框的值是空白的,我希望它们显示一个“所有区域”和另一个显示“所有相”。我怎样才能让它工作?我尝试了许多示例,但都希望我使用“IsSynchronizedWithCurrentItem”为真或 SelectedIndex 为 0,但这也将当前组合框值设置为 SelectedIndex,这不是我想要的,我只想要它,如果组合框是空白的。谁能帮帮我?

ListView 内的组合框

<GridViewColumn Width="100">
                            <GridViewColumn.CellTemplate>
                                <DataTemplate>
                                    <ComboBox Style="{DynamicResource ComboBoxStyle1}" x:Name="zoneComboBox" Margin="0,0,5,0" Height="20" Width="80" ItemsSource="{Binding DataContext.Zones, RelativeSource={RelativeSource AncestorType={x:Type ListBox}, Mode=FindAncestor}}" SelectedValue="{Binding Zone}" SelectedIndex="0"/>
                                </DataTemplate>
                            </GridViewColumn.CellTemplate>
                            <GridViewColumnHeader>
                                <TextBlock Text="Zones" FontFamily="{DynamicResource FontFamily}" FontSize="11" FontWeight="Bold"/>
                            </GridViewColumnHeader>
                        </GridViewColumn>
                        <GridViewColumn Width="100">
                            <GridViewColumn.CellTemplate>
                                <DataTemplate>
                                    <ComboBox Style="{DynamicResource ComboBoxStyle1}" x:Name="faciesComboBox" Margin="0,0,5,0" Height="20" Width="80" ItemsSource="{Binding DataContext.Facies, RelativeSource={RelativeSource AncestorType={x:Type ListBox}, Mode=FindAncestor}}" SelectedValue="{Binding Facie}" SelectedIndex="0"/>
                                </DataTemplate>
                            </GridViewColumn.CellTemplate>
                            <GridViewColumnHeader>
                                <TextBlock Text="Facies" FontFamily="{DynamicResource FontFamily}" FontSize="11" FontWeight="Bold"/>
                            </GridViewColumnHeader>
                        </GridViewColumn>

添加新规则方法

private void AddRuleBtn_Click(object sender, RoutedEventArgs e)
    {
        rules.Add(new GeologicalAnalysisRule());
    }

可观察集合(编辑)

private ObservableCollection<GeologicalAnalysisRule> rules;

    public RuleSetterControl()
    {
        InitializeComponent();
        Rules = new ObservableCollection<GeologicalAnalysisRule>();
        Rules.Add(new GeologicalAnalysisRule());
    }

    public ObservableCollection<GeologicalAnalysisRule> Rules
    {
        get { return rules; }
        set
        {
            if (Equals(value, rules)) return;
            rules = value;
            OnPropertyChanged();
        }
    }

【问题讨论】:

    标签: c# wpf combobox


    【解决方案1】:

    在按钮点击事件中使用属性规则,而不是使用私有变量规则。

    private void AddRuleBtn_Click(object sender, RoutedEventArgs e)
    {
        Rules.Add(new GeologicalAnalysisRule());
    }
    

    【讨论】:

    • 只是一个好奇的问题,有没有任何可能的方法可以用数据触发器或类似的东西来做到这一点?或者点嘿只是替换您拥有的现有值并忽略任何当前存储的值?
    猜你喜欢
    • 2023-03-03
    • 1970-01-01
    • 2012-04-07
    • 2016-11-17
    • 2012-07-25
    • 2014-02-14
    • 2011-08-23
    • 2015-11-05
    相关资源
    最近更新 更多