VS初学者问题.如何更改控件的父控件?例.我在表单上有TabControl,对齐以适应所有表单.我双击toolStrip控件来创建菜单而不是表单toolStrip被添加到TabControl.如何将ToolStrip从TabControl移动到Form.我可以使用复制/粘贴,但这并不总是有效.
当我UserControl在WPF中创建一个新的时,studio会创建一些XAML:
<UserControl x:Class="MOG.Objects.Date.Calender"
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">
<Grid>
</Grid>
</UserControl>
Run Code Online (Sandbox Code Playgroud)
在UserContol我还可以添加Width属性.DesignWidth和之间有什么区别Width?
当我创建WPF UserControl并尝试使用它时,我得到以下编译器错误:
由于'UserControl1'在同一程序集中实现,因此必须设置x:Name属性而不是Name属性.
关于如何解决它的消息很清楚,但它的原因是什么?为什么我不能Name在这里使用?
我有一个包含自定义UserControl的窗口.UserControl需要知道何时关闭包含它的Window,以便它可以终止一个线程.
我最好的猜测是如何实现这一点是处理UserControl的Unloaded事件.但是,Unloaded事件似乎仅在用户实际单击以关闭窗口时触发,而不是在我以编程方式调用窗口上的Close()方法时触发.
为了便于参考,以下是我的代码的一些相关部分.
MyWindow.xaml:
<Window x:Class="Namespace.MyWindow"
xmlns:controls="clr-namespace:Namespace.Controls">
<controls:MyControl/>
</Window>
Run Code Online (Sandbox Code Playgroud)
MyControl.xaml:
<UserControl x:Class="Namespace.Controls.MyControl"
Unloaded="UserControl_Unloaded"/>
<!-- Stuff -->
</UserControl>
Run Code Online (Sandbox Code Playgroud)
MyControl.xaml.cs:
void UserControl_Unloaded(object sender, RoutedEventArgs e)
{
// Stop the thread.
}
Run Code Online (Sandbox Code Playgroud)
所以回顾一下,当我关闭"手动"窗口(alt-F4,单击红色"X"等)时,上面的UserControl_Unloaded()方法被调用,但不是来自我调用的代码中的其他地方myWindow.Close().有任何想法吗?
我正在使用VS2010并且如果我在设计器模式下打开表单并运行我的应用程序,则设计器选项卡将不再显示表单设计器,而是将显示错误(并且仅通过重新启动IDE来修复)说:
"为了防止在加载设计器之前可能丢失数据,必须解决以下错误:"
1错误:
"设计器无法显示此文件,因为其中的任何类都无法设计.设计人员检查了文件中的以下类:##### ---基类#####不能已确保已引用程序集并且已构建所有项目"
然后我显示以下调用堆栈:
在System.ComponentModel.Design.Serialization.CodeDomDesignerLoader.EnsureDocument(IDesignerSerializationManager经理)
在System.ComponentModel.Design.Serialization.CodeDomDesignerLoader.PerformLoad(IDesignerSerializationManager经理)
在Microsoft.VisualStudio.Design.Serialization.CodeDom.VSCodeDomDesignerLoader.PerformLoad(IDesignerSerializationManager serializationManager)
在System.ComponentModel.Design.Serialization.BasicDesignerLoader.BeginLoad(IDesignerLoaderHost主机)
非常感谢任何帮助,这真的很烦人.
谢谢,
乔尔.
我有一个DataGrid用于显示一些数据的WPF应用程序.当我运行该程序时,还有一个附加列,如下所示:
这是我在VS2010中设计时的样子
我已关闭数据网格上的AutoGenerateColumns并单独指定列(这是用户控件):
<Grid Margin="10,10,10,10">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition />
</Grid.RowDefinitions>
<DataGrid x:Name="EmployeeHours" AutoGenerateColumns="False" ItemsSource="{Binding EmployeeHoursLastWeek}" Width="Auto">
<DataGrid.Columns>
<DataGridTextColumn Header="PerceptionistID" Binding="{Binding PerceptionistID}" Width="100" />
<DataGridTextColumn Header="Week Of" Binding="{Binding WeekOf, StringFormat={}{0:MM/dd/yyyy}}" Width="75" />
<DataGridTextColumn Header="Regular Hours" Binding="{Binding WorkHours}" Width="100" />
<DataGridTextColumn Header="PTO Hours" Binding="{Binding PTOHours}" Width="100" />
<DataGridTextColumn Header="Holiday Hours" Binding="{Binding HolidayHours}" Width="100" />
</DataGrid.Columns>
</DataGrid>
<Button x:Name="ImportHoursButton" Content="Import Hours"
Command="{Binding ImportHoursCommand}"
Height="25" Width="100" Margin="10"
VerticalAlignment="Bottom" HorizontalAlignment="Right"
Grid.Row="1" />
</Grid>
Run Code Online (Sandbox Code Playgroud)
我还有一个MainWindowView,它使用注入来显示视图(这是一个常规窗口):
<Window x:Class="Sidekick.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:vm="clr-namespace:Sidekick.ViewModel"
xmlns:vw="clr-namespace:Sidekick.View"
Title="Sidekick"> …Run Code Online (Sandbox Code Playgroud) 我想定义以下控件:
public partial class ObjectSelectorControl<T> : UserControl where T : class
Run Code Online (Sandbox Code Playgroud)
问题是设计师无法解决这个问题.这个问题有解决方法吗?
你好.我有一个包含文本框的UserControl.我想访问文本框的textchanged事件,但在usercontrol的事件属性中,我没有看到文本框的事件.如何使用C#从Winforms中公开公开的UserControl公开和处理子控件的特定事件.
我正在开发LOB应用程序,我将需要多个对话框窗口(并且在一个窗口中显示所有内容不是一个选项/没有意义).
我希望我的窗口有一个用户控件来定义一些样式等,并且可以有几个插入内容的插槽 - 例如,模态对话框窗口的模板将有一个内容插槽和按钮(这样用户就可以提供带有绑定ICommands的内容和按钮组.
我想有这样的东西(但这不起作用):
UserControl xaml:
<UserControl x:Class="TkMVVMContainersSample.Services.Common.GUI.DialogControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Background="{DynamicResource {x:Static SystemColors.ControlBrushKey}}"
>
<DockPanel>
<DockPanel
LastChildFill="False"
HorizontalAlignment="Stretch"
DockPanel.Dock="Bottom">
<ContentPresenter ContentSource="{Binding Buttons}"/>
</DockPanel>
<Border
Background="{DynamicResource {x:Static SystemColors.WindowBrushKey}}"
Padding="8"
>
<ContentPresenter ContentSource="{Binding Controls}"/>
</Border>
</DockPanel>
</UserControl>
Run Code Online (Sandbox Code Playgroud)
这样的事情可能吗?我怎么告诉VS我的控件暴露了两个内容占位符,以便我可以像这样使用它?
<Window ... DataContext="MyViewModel">
<gui:DialogControl>
<gui:DialogControl.Controls>
<!-- My dialog content - grid with textboxes etc...
inherits the Window's DC - DialogControl just passes it through -->
</gui:DialogControl.Controls>
<gui:DialogControl.Buttons>
<!-- My dialog's buttons with wiring, like
<Button Command="{Binding HelpCommand}">Help</Button>
<Button Command="{Binding CancelCommand}">Cancel</Button>
<Button …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个与iPhone上的"幻灯片"按钮类似的按钮.我有一个动画调整按钮的位置和宽度,但我希望这些值基于控件中使用的文本.目前,它们是硬编码的.
到目前为止,这是我的工作XAML:
<CheckBox x:Class="Smt.Controls.SlideCheckBox"
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"
xmlns:local="clr-namespace:Smt.Controls"
xmlns:System.Windows="clr-namespace:System.Windows;assembly=PresentationCore"
Name="SliderCheckBox"
mc:Ignorable="d">
<CheckBox.Resources>
<System.Windows:Duration x:Key="AnimationTime">0:0:0.2</System.Windows:Duration>
<Storyboard x:Key="OnChecking">
<DoubleAnimation Storyboard.TargetName="CheckButton"
Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(TranslateTransform.X)"
Duration="{StaticResource AnimationTime}"
To="40" />
<DoubleAnimation Storyboard.TargetName="CheckButton"
Storyboard.TargetProperty="(Button.Width)"
Duration="{StaticResource AnimationTime}"
To="41" />
</Storyboard>
<Storyboard x:Key="OnUnchecking">
<DoubleAnimation Storyboard.TargetName="CheckButton"
Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(TranslateTransform.X)"
Duration="{StaticResource AnimationTime}"
To="0" />
<DoubleAnimation Storyboard.TargetName="CheckButton"
Storyboard.TargetProperty="(Button.Width)"
Duration="{StaticResource AnimationTime}"
To="40" />
</Storyboard>
<Style x:Key="SlideCheckBoxStyle"
TargetType="{x:Type local:SlideCheckBox}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type local:SlideCheckBox}">
<Canvas>
<ContentPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
Content="{TemplateBinding Content}"
ContentTemplate="{TemplateBinding ContentTemplate}"
RecognizesAccessKey="True"
VerticalAlignment="Center"
HorizontalAlignment="Center" />
<Canvas>
<!--Background-->
<Rectangle Width="{Binding ElementName=ButtonText, Path=ActualWidth}"
Height="{Binding ElementName=ButtonText, Path=ActualHeight}" …Run Code Online (Sandbox Code Playgroud) user-controls ×10
wpf ×6
c# ×3
winforms ×2
xaml ×2
animation ×1
c#-4.0 ×1
childcontrol ×1
data-binding ×1
designer ×1
events ×1
generics ×1
wpfdatagrid ×1