【问题标题】:how to resize this wpf button如何调整这个 wpf 按钮的大小
【发布时间】:2018-11-07 18:22:01
【问题描述】:

我不擅长 WPF,我在这方面有点挣扎。我有一个包含以下代码的 WPF 窗口:

 <ContentControl.Content>
            <Button Name="btnUpdateCommand" HorizontalAlignment="Right" Grid.Row="2" Command="{Binding UpdateCommand}" Height="23" Margin="0,4">
                <StackPanel Orientation="Horizontal" Name="txtUpdate" HorizontalAlignment="Right">
                    <TextBlock Text="{Binding InstallButtonText}"  DockPanel.Dock="Right" Margin="5,2,0,0" HorizontalAlignment="Right"></TextBlock>
                    <TextBlock Text="{Binding FormCloseCountDown}"  DockPanel.Dock="Right" Margin="5,2,0,0"></TextBlock>
                </StackPanel>
            </Button>
        </ContentControl.Content>

当我有本地化文本时如何调整 btnUpdateCommand 的大小。我尝试更改 TextBlock 等的对齐方式,但没有任何乐趣。
举个例子,这是按钮有英文时的样子 这就是按钮有法语时的样子 我错过了什么?

这里是 XAML 条目:

<UserControl x:Class="UpdateCheckModule.UpdateCheckProgress"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
         mc:Ignorable="d" 
         d:DesignHeight="300" d:DesignWidth="300"
         Height="250" Width="500">

<Grid Margin="10">
    <Grid.RowDefinitions>
        <RowDefinition Height="175"></RowDefinition>
        <RowDefinition Height="10"></RowDefinition>
        <RowDefinition Height="30"></RowDefinition>
    </Grid.RowDefinitions>



    <ContentControl Grid.Row="0">
        <ContentControl.Content>
            <Grid>
                <Grid.RowDefinitions>
                    <RowDefinition Height="95"></RowDefinition>
                    <RowDefinition Height="30"></RowDefinition>
                    <RowDefinition Height="23"></RowDefinition>
                </Grid.RowDefinitions>

                <TextBlock Text="{Binding Title}" Grid.Row="0" FontSize="18" />
                <TextBlock Text="{Binding Status}" Grid.Row="1" />
                <Border Grid.Row="2" BorderThickness="1" BorderBrush="DarkGray">
                    <ProgressBar  Value="{Binding ProgressPercentage}" Foreground="#FF10AAE7"></ProgressBar>
                </Border>

            </Grid>
        </ContentControl.Content>
        <ContentControl.Style>
            <Style TargetType="{x:Type ContentControl}">
                <Setter Property="Visibility" Value="Visible"></Setter>
                <Style.Triggers>
                    <DataTrigger Binding="{Binding HideProgress}" Value="True">
                        <Setter Property="Visibility" Value="Collapsed"></Setter>
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </ContentControl.Style>
    </ContentControl>

    <ContentControl Grid.Row="0">
        <ContentControl.Content>
            <Grid>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="9*"></ColumnDefinition>
                    <ColumnDefinition Width="1*"></ColumnDefinition>
                </Grid.ColumnDefinitions>
                <Grid.RowDefinitions>
                    <RowDefinition Height="40"></RowDefinition>
                    <RowDefinition Height="20"></RowDefinition>
                    <RowDefinition Height="115"></RowDefinition>
                </Grid.RowDefinitions>

                <TextBlock Text="{Binding Title}" Grid.Row="0" FontSize="18" />
                <Image Source="pack://application:,,,/UpdateCheckModule;component/sedv2.ico" Grid.Column="1"></Image> 
                <TextBlock Text="{Binding ReleaseNotesText}" Grid.Row="1" Grid.ColumnSpan="2"/>
                <Border BorderThickness="1" BorderBrush="DarkGray" Grid.Row="2" Grid.ColumnSpan="2">
                    <ScrollViewer VerticalScrollBarVisibility="Auto">
                        <TextBlock Text="{Binding DeploymentManifest.ReleaseNotes}" Background="White" Margin="5"></TextBlock>
                    </ScrollViewer>
                </Border>
            </Grid>

        </ContentControl.Content>
        <ContentControl.Style>
            <Style TargetType="{x:Type ContentControl}">
                <Setter Property="Visibility" Value="Collapsed"></Setter>
                <Style.Triggers>
                    <DataTrigger Binding="{Binding HideProgress}" Value="True">
                        <Setter Property="Visibility" Value="Visible"></Setter>
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </ContentControl.Style>
    </ContentControl>

    <Button Name="btnSkip" HorizontalAlignment="Left" Grid.Row="2" Content="{Binding SkipButtonText}" Width="100" Command="{Binding SkipCommand}" Height="23">
    </Button>

    <ContentControl Grid.Row="2">
        <ContentControl.Content>
            <Button Name="btnUacRestartCommand"  HorizontalAlignment="Right" Grid.Row="2" Width="175" Command="{Binding UacRestartCommand}" Height="23">
                <StackPanel Orientation="Horizontal">
                    <Image Source="{Binding Shield}" DockPanel.Dock="Left"></Image>
                    <TextBlock Text="{Binding AdminInstallButtonText}"  DockPanel.Dock="Right" Margin="5,2,0,0"></TextBlock>
                    <TextBlock Text="{Binding FormCloseCountDown}"  DockPanel.Dock="Right" Margin="5,2,0,0"></TextBlock>
                </StackPanel>
            </Button>
        </ContentControl.Content>
        <ContentControl.Style>
            <Style TargetType="{x:Type ContentControl}">
                <Setter Property="Visibility" Value="Collapsed"></Setter>
                <Style.Triggers>
                    <DataTrigger Binding="{Binding RequireUAC}" Value="True">
                        <Setter Property="Visibility" Value="Visible"></Setter>
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </ContentControl.Style>
    </ContentControl>

    <ContentControl Grid.Row="2">
        <ContentControl.Content>
            <Button Name="btnUpdateCommand" HorizontalAlignment="Right" Grid.Row="2" Width="175" Command="{Binding UpdateCommand}" Height="23">
                <StackPanel Orientation="Horizontal">
                    <TextBlock Text="{Binding InstallButtonText}"  DockPanel.Dock="Right" Margin="5,2,0,0"></TextBlock>
                    <TextBlock Text="{Binding FormCloseCountDown}"  DockPanel.Dock="Right" Margin="5,2,0,0"></TextBlock>
                </StackPanel>
            </Button>
        </ContentControl.Content>
        <ContentControl.Style>
            <Style TargetType="{x:Type ContentControl}">
                <Setter Property="Visibility" Value="Visible"></Setter>
                <Style.Triggers>
                    <DataTrigger Binding="{Binding RequireUAC}" Value="True">
                        <Setter Property="Visibility" Value="Collapsed"></Setter>
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </ContentControl.Style>
    </ContentControl>






</Grid>

【问题讨论】:

  • 你的问题不是很清楚,我测试了你的代码并且按钮被调整大小以适合文本块内的文本。
  • 我将图片添加到我的原始帖子中以说明我的观点。
  • 也不清楚为什么 Button 位于 ContentControl 中。这似乎没有意义。除此之外,似乎还有添加图标的按钮样式。也许问题是由于那种风格。
  • 控件的大小很大程度上受其父项的影响。您显示的代码 sn-p 似乎很好。按钮所在的 ContentControl 的父级是什么?
  • @gofa3 我怀疑你是对的。我刚刚将整个 XML 添加到我的操作中。我怀疑是网格行导致了这个问题。

标签: c# wpf


【解决方案1】:

您将WidthButton 显式设置为175。移除此属性;这将允许Button 确定自己的最佳宽度。

当您使用它时,删除TextBlocks 上的DockPanel.Dock 属性;这些属性没有任何作用,因为TextBlocks 在StackPanel 中,而不是DockPanel

【讨论】:

    猜你喜欢
    • 2021-04-05
    • 2012-01-28
    • 2011-05-30
    • 1970-01-01
    • 2013-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-14
    相关资源
    最近更新 更多