【问题标题】:WPF Combobox displaying differently in different machinesWPF Combobox 在不同的机器上显示不同
【发布时间】:2017-11-27 21:22:53
【问题描述】:

我有一个使用自定义 ComboBox 的 Windows 应用程序。在我的机器文本中正确显示。但在其他机器中,它会切断一点。请问有什么建议吗?

<ComboBox Width="140" Height="5"
                    ItemsSource="{Binding SecurityContexts, Mode=OneWay}"
                    SelectedItem="{Binding ActiveSecurityContext, Mode=TwoWay}"
                    ToolTip="Working Location">
    <ComboBox.ItemTemplate>
        <DataTemplate>
            <!--<TextBlock Text="{Binding Location}"/>-->
            <TextBlock Height="27">
               <TextBlock.Text>
                  <MultiBinding StringFormat="{}{0}&#x0a;{1}">
                     <Binding Path="AddBlank" FallbackValue=''/> <!--Just to add a blank field to hide the location details-->
                     <Binding Path="Location" />
                  </MultiBinding>
               </TextBlock.Text>
            </TextBlock>
       </DataTemplate>
    </ComboBox.ItemTemplate>
</ComboBox>

【问题讨论】:

  • 高度=“5”?试着让它足够大。不同的机器会有不同的字体设置,不同版本的 Windows 会有不同的默认控制模板。允许正常变化。如果用户沉迷于荒谬的变化,那不是你的问题。

标签: wpf combobox


【解决方案1】:

我强烈建议大家不要在控件中硬编码高度和宽度。学习使用 WPF 提供的多种容器选择是一种更好的做法。特别是Grid 是最基本的,但在我看来也是最强大的。这是因为您可以使用 proportionalAuto 大小定义行和列。这将允许您通过创建可调整大小的应用程序来消除对目标监视器分辨率的任何担忧。

就您而言,正如评论中提到的那样,您的身高可能太小了。所以你可以定义一个网格并将你的组合框放在里面

    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="2*"/>
            <ColumnDefinition Width="5*"/>
        </Grid.ColumnDefinitions>
        <ComboBox Grid.Row="0" Grid.Column="0"
                ItemsSource="{Binding SecurityContexts, Mode=OneWay}"
                SelectedItem="{Binding ActiveSecurityContext, Mode=TwoWay}"
                ToolTip="Working Location">
            <ComboBox.ItemTemplate>
                <DataTemplate>
                    <!--<TextBlock Text="{Binding Location}"/>-->
                    <TextBlock Height="27">
                        <TextBlock.Text>
                            <MultiBinding StringFormat="{}{0}&#x0a;{1}">
                                <Binding Path="AddBlank" FallbackValue=''/>
                                <!--Just to add a blank field to hide the location details-->
                                <Binding Path="Location" />
                            </MultiBinding>
                        </TextBlock.Text>
                    </TextBlock>
                </DataTemplate>
            </ComboBox.ItemTemplate>
        </ComboBox>
    </Grid>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-11
    • 2023-02-08
    • 1970-01-01
    • 1970-01-01
    • 2012-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多