小编And*_*eli的帖子

简单(我认为)WPF中的水平线?

创建一个相对简单的数据输入表单,只想用水平线(与HTML中的HR标记不同)将某些部分分开,这些部分会拉伸表单的全长.

我试过这个:

<Line Stretch="Fill" Stroke="Black" X2="1"/>
Run Code Online (Sandbox Code Playgroud)

由于父控件不是固定宽度,因此该行会使窗口拉伸到屏幕的整个宽度.

有没有一种简单的方法可以在不修复父控件/窗口宽度的情况下执行此操作?

wpf xaml wpf-controls

216
推荐指数
4
解决办法
12万
查看次数

WPF:将宽度(和高度)设置为百分比值

说我想要一个TextBlock有它Width等于它的父容器的Width(即从一侧伸展到另一侧)或它的一个百分比的父容器Width,我怎么能做到这一点XAML,而无需指定绝对值?

我想这样做,以便如果稍后展开父容器容器(它的' Width增加),它的'子元素也将自动扩展.(基本上,就像在HTML和CSS中一样)

wpf xaml resize

144
推荐指数
5
解决办法
29万
查看次数

如何将ScrollBar添加到Stackpanel

在我的WPF应用程序中,我有一个包含几个控件的Stackpanel.如何将滚动条添加到此堆栈面板.

c# wpf xaml scrollbars stackpanel

98
推荐指数
3
解决办法
9万
查看次数

如何在Silverlight中将子元素的宽度绑定到父元素的宽度

我有一个宽度为"1*"的网格.所以我认为在运行时确定实际宽度.在该网格中,我有另一个网格,其宽度我想设置为父网格的运行时宽度.我怎么能通过绑定在xaml中做到这一点.

wpf xaml binding width silverlight-4.0

51
推荐指数
4
解决办法
8万
查看次数

WPF - 如何在水平方向的堆栈面板内对齐文本块?

这应该是这么简单 - 我一直在我的桌子上长时间试图让一个看似简单的任务工作(让我觉得WPF不直观或有缺陷)......

在任何情况下,我都有一个设置为水平方向的Stackpanel.在里面我有两个TextBlocks.我希望第二个在右边显示它的文本.

我该如何完成它?

这一切让我想起了为什么我离开了Silverlight.:p

wpf xaml textblock stackpanel .net-3.5

17
推荐指数
2
解决办法
3万
查看次数

如何在 WPF 中折叠星形大小的网格列?

Width通过设置为 来使三列具有相同的宽度Auto

<Grid x:Name="myGrid">
  <Grid.RowDefinitions>
    <RowDefinition Height="Auto" />
  </Grid.RowDefinitions>

  <Grid.ColumnDefinitions>
    <ColumnDefinition Width="*" />
    <ColumnDefinition Width="*" />
    <ColumnDefinition Width="*" />
  </Grid.ColumnDefinitions>

  <Label Grid.Row="0" Grid.Column="0">One</Label>
  <Label Grid.Row="0" Grid.Column="1" x:Name="label1">Two</Label>
  <Label Grid.Row="0" Grid.Column="2">Three</Label>
</Grid>
Run Code Online (Sandbox Code Playgroud)

我想实现的是,如果中间列折叠或隐藏,则其他两列占用剩余空间并获得相同的宽度。

如果我只是因为宽度=“*”而将可见性设置为折叠或隐藏,则其他两列宽度保持不变。

<Label Grid.Row="0" Grid.Column="1" Visibility="Collapsed">Two</Label>
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我通过以编程方式将第二列宽度设置为自动来实现所需的功能,但我正在寻找其他一些解决方案(最好是 xaml 方式一)。

private void Button_Click(object sender, RoutedEventArgs e)
{
  this.myGrid.ColumnDefinitions[1].Width = GridLength.Auto;
  this.label1.Visibility = Visibility.Collapsed;
}
Run Code Online (Sandbox Code Playgroud)

wpf xaml wpf-grid

9
推荐指数
2
解决办法
3539
查看次数

如何设置图像上下文菜单项的图标

当我单击图像时,它显示了菜单,但未显示图标。我尝试了两种方式:

  1. 一是我调整了不起作用的图标的大小
  2. 第二个是我使用不起作用的图标属性设置路径。

为上下文菜单项设置图标的方法是什么?

Xml:

<Image Height="20" Width="20" Source="/CitiCall.WinClient;component/Images/user_icon.png" MouseDown="image1_MouseDown"  Margin="0,0,4,6" HorizontalAlignment="Right"  Name="image1" Stretch="Fill" VerticalAlignment="Top">               
    <Image.ContextMenu>
        <ContextMenu>
            <MenuItem Header="Reset password" Icon="/CitiCall.WinClient;component/Images/reset.png"/>
                <!--<MenuItem.Icon>
                    <Image Source="/CitiCall.WinClient;component/Images/reset.png" ></Image>
                </MenuItem.Icon>
            </MenuItem>-->
            <MenuItem Header="Edit Profile"/>
            <MenuItem Header="Settings"/>
            <MenuItem Header="About us"/>
        </ContextMenu>
    </Image.ContextMenu>
</Image>
Run Code Online (Sandbox Code Playgroud)

Xamal.cs:

private void image1_MouseDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
{
    if (e.ChangedButton == MouseButton.Left)
    {
        Image image = sender as Image;
        ContextMenu contextMenu = image.ContextMenu;                
        contextMenu.PlacementTarget = image;
        contextMenu.IsOpen = true;
    }
}
Run Code Online (Sandbox Code Playgroud)

.net c# wpf xaml contextmenu

6
推荐指数
1
解决办法
9447
查看次数

与WPF中的其他内联相比,如何将内联(Run)水平居中

TextBlock在其中放了2个Inlines Run,HorizontalAlignmentTextBlock的设置为Center,这没关系,我只想将第一个Run比较到第二个,这是我的代码:

<TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" FontFamily="/Throne;component/Fonts/#Segoe UI Light" FontSize="35" FontWeight="Bold" Visibility="{Binding UserNameTextBlockVisibility}">
    <Run FontSize="25">En tant que :</Run>
    <LineBreak />
    <Run Text="{Binding UserName}" Foreground="ForestGreen"/>
</TextBlock>
Run Code Online (Sandbox Code Playgroud)

这是我得到的结果:

在此输入图像描述

我想要实现的目标:

在此输入图像描述

我试图搜索文档和互联网上的线程,但我没有找到实现这一目标的方法,我怎么能意识到这一点?

c# wpf xaml textblock

4
推荐指数
1
解决办法
1020
查看次数

在运行时使用自动生成的列更改WPF数据网格中列标题的颜色

DataGrid在WPF项目窗口中有一个WPF .我用a填充了网格DataTable,并自动生成了列(不幸的是必需),并且需要根据某些其他因素更改列的标题颜色.

我有一个需要突出显示的列名列表,并且可以很容易地根据它来计算出它们的索引(因为我自己生成了它们DataGrid).

但是,我似乎无法让列标题改变颜色,这必须在代码中完成,因为我不知道在设计时哪些列需要突出显示.我已经在标题上有一些模板......不确定这是否"覆盖"我想要做的事情.

网格:

<DataGrid FrozenColumnCount="1"  AutoGenerateColumns="True" Grid.Row="1"
    AlternationCount="2" HeadersVisibility="Column" Name="dgSkillsMatrix"
    Margin="0,0,2,1" HorizontalGridLinesBrush="White" VerticalGridLinesBrush="White"
    AlternatingRowBackground="#FFD0D0EB" RowBackground="#FFECECF5" FontSize="10.5"
    Grid.ColumnSpan="1" CellStyle="{StaticResource CellHighlighterStyle}"
    ColumnHeaderStyle="{StaticResource dataGridColumnHeader}" />
Run Code Online (Sandbox Code Playgroud)

标题模板/样式:

<DataTemplate x:Key="RotateHeaderTemplate" >
    <TextBlock Text="{Binding}" Foreground="Blue" >
        <TextBlock.LayoutTransform>
            <RotateTransform Angle="-90" />
        </TextBlock.LayoutTransform>
    </TextBlock>
</DataTemplate>
Run Code Online (Sandbox Code Playgroud)

这是我到目前为止尝试更改列标题(在Window_Activated实际构建网格/ WPF树时在构造函数之后调用事件调用):

Style newStyle = new System.Windows.Style()
{
    TargetType = typeof(DataGridColumn)
};

// SolidColorBrush((System.Windows.Media.Color)System.Windows.Media.ColorConverter.ConvertFromString("#F70F49"))
newStyle.Setters.Add(new Setter(DataGridColumn.HeaderStringFormatProperty, new SolidColorBrush(Colors.Red)));
this.dgSkillsMatrix.Columns[4].HeaderStyle = newStyle;
Run Code Online (Sandbox Code Playgroud)

c# wpf xaml datagrid

2
推荐指数
1
解决办法
1万
查看次数

从 DataRowView 获取 DataRow 的方法

我当前正在尝试获取 DataGrid 中选定行的内容。

问题是我实际上得到了一个 DataRowView 但我无法用它做任何事情......

我想访问 DataGrid 中所选行的所有字段。

这是可以帮助您的代码:

XAML:

<DataGrid  SelectionUnit="FullRow" SelectedItem="{Binding SelectedZone, Mode=TwoWay}" AutoGenerateColumns="True" Margin="0,167,6,24" Name="existingCase"  Width="780" >
        <DataGrid.RowStyle>
            <Style TargetType="{x:Type DataGridRow}">
                <EventSetter Event="MouseDoubleClick" Handler="resultDataGrid_MouseDoubleClick"/>
            </Style>
        </DataGrid.RowStyle>
    </DataGrid>
Run Code Online (Sandbox Code Playgroud)

CS :

 private void resultDataGrid_MouseDoubleClick(object sender, MouseButtonEventArgs e)
    {
        if (sender != null)
        {
            SelectedZone = existingCase.SelectedItem; 

            // SelectedZone is declared as private object SelectedZone


            MessageBox.Show(SelectedZone.GetType().ToString()); 

            // Result to a System.Data.DataRowView
        }



    }
Run Code Online (Sandbox Code Playgroud)

感谢您的帮助

c# wpf xaml datagrid datarowview

1
推荐指数
1
解决办法
3588
查看次数

如何捕获扩展器标题单击事件

如何在 WPF 中捕获扩展器标题单击事件?谢谢

<Expander  IsExpanded="{Binding Items[0], Mode=OneWay, Converter={StaticResource expanderExpandedConverter}}" HorizontalAlignment="Stretch" ScrollViewer.HorizontalScrollBarVisibility="Hidden" Loaded="Expander_Loaded" >
                                        <Expander.Header>
                                            <DockPanel  PreviewMouseLeftButtonDown="Expander_MouseLeftButtonUp">
                                                <TextBlock Text="{Binding Path=Name}" Style="{StaticResource GroupStyle}" ScrollViewer.HorizontalScrollBarVisibility="Hidden"></TextBlock>
                                            </DockPanel>

                                        </Expander.Header>
                                        <Expander.Style>
                                            <Style TargetType="{x:Type Expander}">
                                                <Setter Property="TextElement.FontFamily" Value="Arial Nova"/>
                                                <Setter Property="BorderThickness" Value="0,0,0,1"/>
                                                <Setter Property="BorderBrush" Value="Black"/>
                                            </Style>
                                        </Expander.Style>
                                        <Expander.Content>
                                            <ItemsPresenter />
                                        </Expander.Content>
                                    </Expander>
Run Code Online (Sandbox Code Playgroud)

我尝试过此操作,但如果我单击扩展器的切换箭头,它不会捕获该事件

c# wpf events xaml click

1
推荐指数
1
解决办法
4625
查看次数