标签: user-controls

如何相对缩放用户控件的大小?

如何相对缩放用户控件的大小,如图像(在图像编辑器中).

示例(100%):

替代文字http://stegnar.com/pic/normalPicture.png

缩小UC(70%):

替代文字http://stegnar.com/pic/normalPicture70percent.png

我在图片编辑器中实现了这一点,但我想在WPF中.:)我需要这个来调整我的应用程序到不同的屏幕分辨率,而没有任何隐藏(没有滚动条).

wpf user-controls scale

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

WPF,UserControl或DataTemplate

最近我试图在我的应用程序中重用一些UI元素.当我开始使用WPF编程时,我被告知DataTemplate是重用UI元素的最佳方式.您可以为数据实体定义模板并在任何地方使用它.听起来很不错.但是,我也发现了一些缺点,特别是在与UserControl进行比较时.

  1. 您不能重用在另一个Window或UserControl中定义的DataTemplate.例如,如果在WindowA.xaml中定义了UserDataTemplate,则无法在WindowB.xaml中使用它.解决方案可能是将DataTemplate作为资源放在全局资源字典中.
  2. DataTemplate很难有一些代码.如第1项所述,如果将DataTemplate放在ResourceDictionary中,则默认情况下无法放置代码.我搜索了问题,是的,我发现了一个让ResourceDictionary有一个cs文件的技巧.但它还有另一个问题.
  3. DataTemplate的另一个问题是您必须清楚DataTemplate实例本身与DataTemplate内容实例之间的区别.DataTemplate只有一个"DataTemplate实例",可能有许多DataTemplate内容实例.让我用一个例子解释一下:

    <DataTemplate>
            <DataTemplate.Resources>
                    <my:User x:key="User1"/>
            </DataTemplate.Resources>                
            <Grid MouseLeftButtonDown="OnMouseLeftButtonDown">
                    <Grid.Resources>
                            <my:User x:key="User2"/>
                    </Grid.Resources>
            </Grid>        
    </DataTemplate>
    
    
    public partial class CodeBehind
    {
             Point mousePos = new Point();
    
            private void OnMouseLeftButtonDown(object sender, MouseButtonEventArgs e)  
            {
                    mousePos = e.Pos...;
            }
    }
    
    Run Code Online (Sandbox Code Playgroud)

结果是:User1将只有一个实例,但是,一旦应用DataTemplate,将创建User2实例,这意味着如果多次应用datatemplate,User2将有许多实例.但是,与UserControl不同,字段"mousePos"不会有很多副本.如果正在应用的DataTemplate 100次,mousePos结构不会有100份,这意味着100个电网将使用的唯一一个mousePos结构字段作为同一时间,这可能会导致问题.在UserControl中,您定义的字段仅由控件使用.100个UserControl实例将具有100个字段副本.

也许我以错误的方式使用DataTemplate.任何评论表示赞赏.

最好的祝福,

扎克

wpf user-controls datatemplate

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

Wpf UserControl和MVVM

我正在考虑为我的应用程序编写WPF用户控件.我在我的应用程序中使用MVVM.

用户控件可能需要可以设置为父视图的依赖项属性.当使用MVVM时,想法是父视图最终将在UserControlsDP与父视图的VM 之间创建绑定)

Dependency Properties需要在View类中创建,因为VM不会继承DependencyObject.这意味着在XAML代码中添加代码.

我想知道你是否可以就使用MVVM开发WPF应用程序时如何设计用户控件提出建议......

.net wpf user-controls dependency-properties mvvm

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

如何创建循环样式ProgressBar

我需要帮助实现这样的循环进度条:

CircularProgressbar

我应该如何通过增加Value财产来实施圆圈?

c# wpf user-controls progress-bar

23
推荐指数
4
解决办法
5万
查看次数

将子项添加到UserControl

我的任务

创建一个UserControl应该能够包含WPF中可用的任何可视子项的子项,子项显示在一个容器中,该容器是一个子容器UserControl.

我的问题

我无法设法让我的容器中的孩子正确显示,我尝试了serval方式,并没有找到一种适用于设计师的方法.我也尝试使用ContentControl但没有显示任何内容.

我的方法

首先,我找到了这个链接,我尝试了一些变化.我设法在正确的容器中显示内容,但它在设计器中不起作用,因为content-property是set-private而设计者想要覆盖它.将所有内容放在XAML中都有效,但在与设计师合作时这并不好.这可能是最喜欢的方式.

在此之后我试图ContentControl通过将它的Content-property绑定到UIElementCollection-type 的可绑定属性来使用.这种方法不会给设计师带来任何错误,但我必须承认我从未Button在容器中看到任何控件(例如a ).它保持空白但添加了孩子.

结论

经过一段时间寻找一个简单快捷的解决方案后,我决定在这里寻求解决方案.我有点失望.如果微软可以将样本带入MSDN,那将非常有用.

我确信必须有一种简单的方法来存档.

现在的情况

感谢Andrei Gavrilajberger,我将其存档以创建一个显示内容的节点(请参阅下面的代码),但仍有两个问题: - 没有设计师支持 - 边框(请参阅xaml)未在设计器中显示,并且在应用程序时未显示正在运行甚至没有保证金

public class NodeContent : ContentControl
{
    static NodeContent()
    {
        DefaultStyleKeyProperty.OverrideMetadata(typeof(NodeContent), new FrameworkPropertyMetadata(typeof(NodeContent)));
    }
}

public partial class Node : UserControl, INotifyPropertyChanged
{
    UIElementCollection _Elements;

    public event PropertyChangedEventHandler PropertyChanged;

    public UIElementCollection NodeContent
    {
        get { return _Elements; }
        set
        {
            _Elements = …
Run Code Online (Sandbox Code Playgroud)

c# wpf user-controls wpf-controls

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

调整FlowLayoutPanel中usercontrols之间的间距

我正在构建一个WinForms应用程序窗口(窗体),我正在使用FlowLayoutPanel,并在其中添加了usercontrols.现在我一直在查看FlowLayoutPanel和UserControl的属性,但似乎无法找到与usercontrols之间的间距有关的任何内容.我希望usercontrols彼此更接近,如果只有几个像素.usercontrols本身在numericUpDown的任何一侧都没有空格.任何的意见都将会有帮助.

我的FlowLayoutPanel:

示例流程布局面板

c# user-controls flowlayoutpanel winforms

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

C#:如何让用户控件正确自动调整大小

我有一个UserControlLabel(顶部),一个FlowLayoutPanel(填充,顶部流动和没有包裹)和一个Panel(底部)组成的.用户控件根据获取的内容列表创建许多控件,并将它们添加到FlowLayoutPanel.

如何才能UserControl正确调整大小以使其FlowLayoutPanel没有任何滚动条?我曾尝试使用的各种组合AutoSize,并AutoSizeModeFlowLayoutPanelUserControl本身,但我似乎无法得到它的工作.要么我最终得到的东西根本没有自我调整,要么它不会变得足够大或者它被压缩到几乎没有.

c# user-controls dynamic winforms

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

如何在Android上制作Twitter应用程序风格的快速操作

是否有任何代码可以提供有关如何实现Twitter for Android应用程序中显示的"快速操作"和"弹出"菜单的示例?

user-controls android popupwindow android-view

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

用户控件(ascx)和属性

我发现在用户控件中保留属性值的唯一方法是使用ViewState.

public string Title {
        get { return Convert.ToString(ViewState["Title"]); }
        set { ViewState["Title"] = value; }
    }
Run Code Online (Sandbox Code Playgroud)

我不能说我对此印象非常深刻,因为用户控件的属性越多,你就越容易陷入ViewState.是否有更好的方法来坚持物业?

asp.net viewstate user-controls properties

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

usercontrol中的所有控件都为null

我有一个UserControl,它使用UserControl,以及其他控件.

ascx文件中我有以下代码:

<%@ Register TagPrefix="tag" Namespace="some.name.space" Assembly="some.assembly" %>
<tag:control ID="test" runat="server" />
Run Code Online (Sandbox Code Playgroud)

在我的Page_Load方法中,我尝试在测试中设置属性,如下所示:

test.Text = "Hello World!";
Run Code Online (Sandbox Code Playgroud)

这实际上在我的用户控件中设置了文字控件的Text属性test.

这引发了一个异常:

你调用的对象是空的

当它试图设置

lblTest.Text = value; 
Run Code Online (Sandbox Code Playgroud)

null为的对象是lblTest.

我没有正确添加用户控件吗?我应该 - 或者我必须 - Src在注册标签时指定属性吗?如果是这样,我必须注册我使用的每个用户控件?

这也导致usercontrol中没有控件加载,并且usercontrol中的所有控件都为null.

.net c# asp.net user-controls

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