Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/327.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# 设置大小以填充空间_C#_.net_Wpf_Xaml_User Interface - Fatal编程技术网

C# 设置大小以填充空间

C# 设置大小以填充空间,c#,.net,wpf,xaml,user-interface,C#,.net,Wpf,Xaml,User Interface,我有一个ComboBox,正在为它添加标签,而不是ComboBoxItems。我希望标签填满下拉列表中的整个空间。我试图在上面编写代码,但是标签的宽度总是返回为0,所以我的代码不起作用 我怎样才能做到这一点?我希望ComboBox的项(标签)能够填充整个下拉列表的宽度。我确信在现实应用程序中,将标签控件作为ComboBox项毫无意义 无论如何,下面显示的最小样式(指定给ComboBox属性)将负责项目的适当水平拉伸 foreach (TableContainer table in listOpe

我有一个ComboBox,正在为它添加标签,而不是ComboBoxItems。我希望标签填满下拉列表中的整个空间。我试图在上面编写代码,但是标签的宽度总是返回为0,所以我的代码不起作用


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

我确信在现实应用程序中,将标签控件作为ComboBox项毫无意义

无论如何,下面显示的最小样式(指定给ComboBox属性)将负责项目的适当水平拉伸

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;
                }
            }
        }


为什么要从代码中创建UI元素开始?这就是XAML的用途。@HighCore-它是在运行时动态创建的。这只是一个简单的例子。如果需要动态UI,请使用
数据模板
,可能还需要使用
项控件
。不要在代码中创建UI元素。这不是win(hack)表单。即使它是一个快速的应用程序,也要正确操作。此外,您正在基于
列表openunjoinedtables
向组合框添加项目。为什么不将
ComboBox.ItemsSource
属性绑定到该属性,并使用适当的
ItemTemplate
?这仍然不能解决我的问题@HighCore。我知道这不是解决问题的办法,但我有自己的理由。即使我在XAML中创建了UI元素,我要问的问题仍然存在。
<ComboBox Name="cmb">
    <ComboBox.ItemContainerStyle>
        <Style TargetType="ComboBoxItem">
            <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
        </Style>
    </ComboBox.ItemContainerStyle>
</ComboBox>