小编Dav*_*mer的帖子

在WPF中打印集合

有没有办法在WPF中打印内存集合或可变大小?

我正在使用以下代码打印ListView控件.但是当内容大于垂直滚动条接管并切割内容时.

 PrintDialog printDialog = new PrintDialog();
                printDialog.ShowDialog();

                printDialog.PrintVisual(lvDocumentSummary, "testing printing!");
Run Code Online (Sandbox Code Playgroud)

printing wpf printdialog

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

如何用图形路径完全替换WPF按钮的内容?

我已经使用Blend解构了一个标准的WPF按钮,并设法创建一个漂亮的样式按钮,但我无法弄清楚如何使路径填充按钮空间的内部(按钮宽度和高度).我也不确定是否需要指定ContentPresenter,即使它是正确的.我在按钮中间的文本之后(正常),但我的图形路径在它后面.

谁能给我反馈如何完成这个?风格定义为;

    <ControlTemplate x:Key="CurvedButton" TargetType="{x:Type Button}">
        <Grid>
            <Path Fill="#ff951c1f" Data="F1 M 64,16 C 64,24 56,31 48,31 L 15,31 C 7,31 0,24 0,16 C 0,7 7,0 15,0 L 48,0 C 56,0 64,7 64,16 Z" />
            <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" Width="Auto" />
        </Grid>
    </ControlTemplate>
Run Code Online (Sandbox Code Playgroud)

这个按钮的用法是;

<StackPanel>
    <Button Template="{StaticResource CurvedButton}" FontFamily="MS Trebuchet" FontSize="40" Width="200" Height="120" Foreground="Black">XXXXXXXXXXX</Button>
</StackPanel>
Run Code Online (Sandbox Code Playgroud)

一切都完成后,它应该看起来像一个弯曲的红色按钮.

提前致谢

瑞安

wpf styles path button contentpresenter

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

如何在TreeView中选择Next/Previous TreeViewItem?

我有First/Last/Previous/Next按钮,用于更改TreeViewItem的选定子节点.将First节点和Last节点设置为选中不是问题.例如,要选择最后一个子节点:

TreeViewItem selectedItem = (myTreeView.SelectedItem as TreeViewItem);
TreeViewItem ParentItem = (selectedItem.Parent as TreeViewItem);
(ParentItem.Items[ParentItem.Items.Count - 1] as TreeViewItem).IsSelected = true;
Run Code Online (Sandbox Code Playgroud)

将上一个/下一个项目设置为选中的最简单/最优雅的方法是什么?

谢谢!

.net wpf treeview treeviewitem

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

在WPF中调用Dispatcher的问题

我有一些需要从我的后台演示者线程更新的UI代码.所以,我执行以下操作:从我的后台线程,我在UI中设置我的属性:

_ui.ConnectionStatus = "A";
Run Code Online (Sandbox Code Playgroud)

然后,我的设置如下:

public string ConnectionStatus
{
    set
    {
        if (Dispatcher.CheckAccess())
            ConnectionStatusTxt.Content = value;
        else
        {
            Dispatcher.Invoke(DispatcherPriority.Normal, (Action)(() =>
                              {ConnectionStatusTxt.Content = value;}));
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

The calling thread cannot access this object because a different thread owns it.

我的理解是Dispatcher负责调用不同的线程,所以这个错误让我感到困惑.谢谢!

c# wpf multithreading dispatcher

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

我可以在ContentTemplate中的单个Content或ContentSource中指向两个ContentPresenter吗?

我已经创建了一个类似于Outlook 2007的NavigationPane。在Outlook中,当窗格被折叠并且单击侧栏时,它用来弹出Selected NavigationItem内容。我在ControlTemplete中使用contentpresenter模仿了相同的行为(一个用于TabControl的SelectItemHost,另一个用于Popup)。但是问题是当打开弹出窗口时,NavigationPane会在不显示内容的情况下选择内容,而当我们从另一个导航项切换回相同的导航项时会显示该内容。我正在使用TabControl和TabItem作为NavigationPane和NavigationPaneItem。

我将“ SelectedContent”指向两个ContentPresenter的ContentSource

wpf contentpresenter

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

WPF加速器密钥,如Visual Studio

我正在用C#和WPF开发一大堆业务应用程序.我们的标准是包括所有表格上按钮的加速键(保存,取消,搜索等).我最近注意到,当加载表单时,即使用户没有按下"Alt"键,加速键也会激活.例如,我们的搜索按钮使用"Alt-H"作为加速器,但用户只需按"H"即可启动搜索.我在按钮内容中使用标准"_"来创建加速键.

<Button Content="Searc_h"/>
Run Code Online (Sandbox Code Playgroud)

有没有其他人注意到这种行为,有没有人找到一个合适的解决方法,需要按"Alt"键?

wpf hotkeys

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

DataBind到WPF中的文本框

我对WPF中的数据绑定完全不熟悉,我正在尝试将对象属性绑定到文本框.我的目标是

public class TestObj
{
    private m_Limit;

    public string Limit
    {
       get 
        {
         return m_Limit;
        }
        set
        {
          m_Limit = value;
        }
    }
Run Code Online (Sandbox Code Playgroud)

我的XAML看起来像

<Window x:Class="NECSHarness2.UpdateJobParameters"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:tools="clr-namespace:ManagementObjects;assembly=Core"
DataContext="{Binding RelativeSource={RelativeSource Self}}"
Title="Update Job Parameters" Height="320" Width="460">
<Grid>
    <TextBox Text ="{Binding Path = Limit, Mode = TwoWay}" Height="20" HorizontalAlignment="Right" Margin="0,48,29,0" Name="textBox3" VerticalAlignment="Top" Width="161" />
   </Grid>
Run Code Online (Sandbox Code Playgroud)

现在,显然我没有把源设置在任何地方,我很困惑.我得到了这个与listview一起工作,但现在我很难过.谢谢你的帮助.

c# data-binding wpf textbox

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

文本框中不允许为零

我需要一个只有用户可以允许输入整数的文本框.但是用户不能输入零​​.也就是说,他可以输入10,100等而不是0.如何在KeyDown中创建活动?

c# forms wpf input-filtering

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

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

如何在WPF中的模板化TabItem上获得关闭按钮?

我有一个TabControlTabItems的DataTemplat主编.该模板似乎正常工作,因为我要在其中显示的用户控件TabItem正确显示.

我不确定的是如何让"x"显示出来,TabItem因此我可以关闭每个标签,因为它们是通过模板动态生成的.

作为WPF的新手,我开始接受许多概念,但是TabControl给了我很多麻烦,所以我很可能让模板可行,但不可维护.

这就是我所拥有的,我希望能够关闭每一个TabControl.我还需要能够在TabControl关闭时触发自定义事件.

<UserControl x:Class="Russound.Windows.UI.UserControls.CallLog.CaseReaderWpf"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:CallLog="clr-namespace:Russound.Windows.UI.UserControls.CallLog"
    Height="637" Width="505">

    <UserControl.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="/Russound.Windows;component/UI/RussoundDictionary.xaml"/>
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </UserControl.Resources>

    <TabControl x:Name="tabCases" >
        <TabControl.ItemTemplate>
            <DataTemplate DataType="{x:Type TabItem}">
                <StackPanel>
                    <TextBlock Text="{Binding Path=Id}" />
                </StackPanel>
            </DataTemplate>
        </TabControl.ItemTemplate>
        <TabControl.ContentTemplate>
            <DataTemplate DataType="{x:Type TabItem}">
                <CallLog:CaseReadOnlyDisplay DataContext="{Binding}" />
            </DataTemplate>
        </TabControl.ContentTemplate>
    </TabControl>
</UserControl>
Run Code Online (Sandbox Code Playgroud)

wpf styles datatemplate .net-3.5

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