C# WPF自定义控件
我一直在努力想办法解决这个问题 故事:我有一个C# WPF自定义控件,c#,wpf,properties,C#,Wpf,Properties,我一直在努力想办法解决这个问题 故事:我有一个主窗口和两个用户控件。 当主窗口加载时,一个控件可见,另一个不可见。 一旦用户输入了他们的数据和设置,我需要使另一个表单可见 启动时不可见的表单需要初始化,因为它正在从运行它的计算机的WMI收集数据。它还收集广告信息,为用户做准备 由于某种原因,我无法得到一个表格来显示另一个表格 我想这就是我应该看到的: #region Class Variable public string ShowSideBar { get { return (Stri
主窗口和两个用户控件。
当主窗口加载时,一个控件可见,另一个不可见。
一旦用户输入了他们的数据和设置,我需要使另一个表单可见
启动时不可见的表单需要初始化,因为它正在从运行它的计算机的WMI收集数据。它还收集广告信息,为用户做准备
由于某种原因,我无法得到一个表格来显示另一个表格
我想这就是我应该看到的:
#region Class Variable
public string ShowSideBar { get { return (String)GetValue(VisibilityProperty); } set { SetValue(VisibilityProperty, value); }}
public DependencyProperty VisibilityProperty = DependencyProperty.Register("ShowSideBar", typeof(string), typeof(UserControl), null);
#endregion
这是在我的MainWindow
类中设置的,但是,我不知道为什么不能从任何其他用户控件调用它
有没有办法从我的主窗口向我的所有窗体公开这样的内容
public int RowSpan {
get { return Grid.GetRowSpan(DockPanel1); }
set { Grid.SetRowSpan(DockPanel1,value); }
}
依赖项属性必须是静态的。为什么类型为字符串
?如果要将控件的可见性绑定到它,它是否应该是可见性
它必须是依赖项属性吗?您也可以使用常规属性并实现INotifyPropertyChanged
,因为您没有将此字段绑定到任何内容,而是将其他内容绑定到它
对于依赖项属性,请尝试以下操作:
public static readonly DependencyProperty SideBarVisibilityProperty = DependencyProperty.Register("SideBarVisibility", typeof(Visibility), typeof(MyTemplatedControl), null);
public Visibility SideBarVisibility
{
get { return (Visibility)GetValue(SideBarVisibilityProperty); }
set { SetValue(SideBarVisibilityProperty, value); }
}
首先,此应用程序将得益于MVVM模式的应用
但是,如果不采取这种方法,您仍然可以解决您的问题。用户控件依靠知道其父控件是什么是不寻常的。主窗口的代码是放置此代码的更好位置。(不如视图模型好……但这是另一回事。)
添加到应使侧栏成为可见事件的控件,ShowSideBar
。在主窗口中附加处理程序,并使用该处理程序显示第二个控件。这里根本不需要依赖属性
public class MyControl : UserControl
{
...
public event EventHandler ShowSideBar;
// Call this method when you need to show the side bar.
public void OnShowSideBar()
{
var s = this.ShowSideBar;
if (s != null)
{
s(this, EventArgs.Empty);
}
}
}
public class MainWindow : Window
{
public MainWindow()
{
this.InitializeComponent();
this.FirstControl.ShowSideBar += (s, e) =>
{
this.SecondControl.Visibility = Visibility.Visible;
}
}
}
我修复了初始化组件,但正在更改
X:Class=“AdminTools.MainWindow.ShowSideBar”到X:Class=“AdminTools.MainWindow”
现在我有一个问题在哪里
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:User="clr-namespace:AdminTools.Controls.User"
xmlns:Custom="clr-namespace:AdminTools.Controls.Custom"
xmlns:Bindings="clr-namespace:AdminTools.Functions"
x:Class="AdminTools.MainWindow"
Title="MainWindow" Height="691.899" Width="1500"
>
<Window.DataContext>
<Bindings:ShowSideBar />
</Window.DataContext>
<Bindings:ShowSideBar /> = ShowSideBar does not exist in the namespace clr-namespace:AdminTools.Functions
=ShowSideBar在命名空间clr命名空间中不存在:AdminTools.Functions
ShowSideBar:成员名称不能与其封闭类型相同。@user3091374,请注意。。。dependency属性的TYPEOF基于自定义类,而不仅仅是派生类的泛型“UserControl”。