【问题标题】:Set size to fill a space设置大小以填充空间
【发布时间】:2013-03-20 17:26:13
【问题描述】:
foreach (TableContainer table in listOpenUnjoinedTables)
            {
                var item = new Label();

                item.MouseEnter += item_MouseEnter;
                item.MouseLeave += item_MouseLeave;

                if (table.IsVirtual == false)
                {
                    item.Content = "[" + table.TableDescription + "]";
                }
                else
                {
                    item.Content = "[" + table.View.Name + "]";
                }

                item.Tag = table;
                cmb.Items.Add(item);

                if (item.ActualWidth > largestWidth)
                {
                    largestWidth = item.ActualWidth;
                }
            }

            if (largestWidth != 0)
            {
                foreach (Label label in cmb.Items)
                {
                    label.Width = largestWidth;
                }
            }
        }

我有一个 ComboBox 并正在向它添加标签,而不是 ComboBoxItems。我希望标签填充下拉列表中的整个空间。我正在尝试在上面编写代码,但是标签的宽度始终返回为 0,因此我的代码不起作用。

我怎样才能做到这一点?我希望 ComboBox 的项目(标签)填充整个下拉列表的宽度。

【问题讨论】:

  • 为什么要在代码中创建 UI 元素?这就是 XAML 的用途。
  • @HighCore - 它是在运行时动态创建的。这只是一个快速示例应用程序
  • 错了。如果您需要动态 UI,请使用 DataTemplates,并且可能使用 ItemsControl。不要在代码中创建 UI 元素。这不是赢(黑客)形式。即使是快速应用,也要做好。
  • 另外,您正在根据 listOpenUnjoinedTables 向 ComboBox 添加项目。为什么不将ComboBox.ItemsSource 属性绑定到该属性并使用正确的ItemTemplate
  • 这仍然不能解决我的问题@HighCore。我知道这不是解决问题的方法,但我有我的理由。即使我在 XAML 中创建了 UI 元素,我所询问的问题仍然存在。

标签: c# .net wpf xaml user-interface


【解决方案1】:

我敢肯定,在现实世界的应用程序中,将 Label 控件作为 ComboBox 项根本没有任何意义。

无论如何,分配给 ComboBox 的ItemContainerStyle 属性的下面显示的最小样式将负责项目的正确水平拉伸。

<ComboBox Name="cmb">
    <ComboBox.ItemContainerStyle>
        <Style TargetType="ComboBoxItem">
            <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
        </Style>
    </ComboBox.ItemContainerStyle>
</ComboBox>

【讨论】:

    猜你喜欢
    • 2014-06-12
    • 2014-10-28
    • 1970-01-01
    • 1970-01-01
    • 2020-07-12
    • 2020-02-15
    • 2021-03-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多