Tag: wpf

WPF自定义控件:集合类型的DependencyProperty

我有一个包含ListBox的CustomControl : 我使用Code Behind中的属性绑定ItemsSource : public partial class CustomList : UserControl, INotifyPropertyChanged { public CustomList( ) { InitializeComponent( ); } public ObservableCollection ListSource { get { return (ObservableCollection)GetValue( ListSourceProperty ); } set { base.SetValue(CustomList.ListSourceProperty, value); NotifyPropertyChanged( “ListSource” ); } } public static DependencyProperty ListSourceProperty = DependencyProperty.Register( “ListSource”, typeof( ObservableCollection ), typeof( CustomList ), new PropertyMetadata( […]

调整无边框窗口的大小wpf

我怎么能用wpf代替windows窗体呢?

WPF TabControl,用C#代码更改TabItem的背景颜色

嗨,我认为这是初学者的问题。 我搜索了所有相关问题。 但是所有这些都是由.xaml回答的。 但是,我需要的是后面的代码。 我有一个TabControl。 我需要设置其项目的背景颜色。 选择,取消选择和hover时,我需要为项目设置不同的颜色。 非常感谢你的帮助。 我想在这里发布我的代码。 但是,目前,我所拥有的只是TabControl的一个实例和一个名为ActiveTabIndex的属性。 —————————————编辑1 ——— ————————————– 我添加了一个事件SelectionChanged (this.myTabControl as System.Windows.Controls.TabControl).SelectionChanged + = TabSet_SelectionChanged; void TabSet_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e) { foreach (System.Windows.Controls.TabItem item in (this.myTabControl as System.Windows.Controls.TabControl).Items) { if (item == (this.myTabControl as System.Windows.Controls.TabControl).SelectedItem) { item.Background = System.Windows.Media.Brushes.Red; } else item.Background = System.Windows.Media.Brushes.Green; } } 但是,我实际上只能设置绿色。 所选项目的背景颜色保持为默认颜色而不是红色。 关于这个的任何提示? 另外,我想知道如何为hover添加事件。 […]

故事板完成后如何调用方法?

我写下面的代码: public void name(object sender, RoutedEventArgs e) { DoubleAnimation myDoubleAnimation = new DoubleAnimation(); myDoubleAnimation.From = 1.0; myDoubleAnimation.To = 0.0; myDoubleAnimation.Duration = new Duration(TimeSpan.FromSeconds(0.2)); sb1 = new Storyboard(); sb1.Children.Add(myDoubleAnimation); Storyboard.SetTargetName(myDoubleAnimation, one.Name); Storyboard.SetTargetProperty(myDoubleAnimation, new PropertyPath(Grid.OpacityProperty)); sb1.Begin(this); if (one.Opacity == 0) { Container_one.Children.Remove(one); } } 但它没有正确的做法。 动画工作正常,但删除错误。 如何将Storyboard-End与对方法的调用结合起来? 很多东西。

在运行时将EnConverter属性添加到枚举

在C#/ WPF应用程序中,我为一些枚举添加了TypeConverter属性,以便显示本地化文本而不是枚举文本: [TypeConverter(typeof(LocalizedEnumTypeConverter))] public enum MyEnum { EnumVal1 = 0, EnumVal2 = 1, EnumVal3 = 2, } 我已经实现了LocalizedEnumTypeConverter来执行此任务。 当我尝试使用与另一个程序集中定义的枚举相同的方法时出现问题,该枚举无法访问LocalizedEnumTypeConverter,并且与其他应用程序共享(也就是说,我无法添加对LocalizedEnumTypeConverter所在的程序集的引用)定义)。 有没有办法在运行时添加TypeConverter属性? 这样我可以在没有TypeConverter属性的情况下将枚举保留在其他程序集中,然后在我的应用程序中将其添加到运行时。

为什么我的listboxitems没有崩溃?

如果我单击列表中间的项目,我希望除了1个元素之外的所有元素都会折叠。 实际输出是剩下很多项目。 为什么? 这是整个计划。 using System; using System.Collections.Generic; using System.Windows; using System.Windows.Controls; namespace WpfApplication2 { public partial class MainWindow : Window { public class obj { } public MainWindow() { InitializeComponent(); List objList = new List(); for (int i = 0; i < 30; i++) objList.Add(new obj()); lb.ItemsSource = objList; } private void lb_SelectionChanged(object sender, […]

为什么窗口的卸载事件不会在WPF中触发?

在我的WPF应用程序中,我创建了一个窗口,并通过ShowDialog()方法调用它来显示它。 但是当我通过Close()方法关闭窗口时,不会为此对话框窗口触发Unloaded事件。 MyWindow obj = new MyWindow(); obj.ShowDialog(); obj.Close();

应用程序MainWindow在WPF中为空(使用Caliburn Micro)

我正在开发一个WPF应用程序,我需要指向一个控件内的应用程序的主窗口。 我正在使用Caliburn Micro。 Application.Current.MainWindow为null 如何在Caliburn Micro中获得对MainWindow应用程序的引用?

WPF转换器:文化来自哪里

我创建了一个WPF转换器类: public class DoubleConverter : IValueConverter { public object Convert(object value, Type TargetType, object parameter, CultureInfo culture) { //blah blah } } 我想知道谁设置了传递的culture参数。 我希望它与当前的Windows设置相同,但它似乎有所不同。 任何人?

有两个键和一个对象的最佳C#集合是什么?

我有一个MenuManager类,每个模块可以添加一个键和要加载到主要内容中的元素: private Dictionary _mainContentItems = new Dictionary(); public Dictionary MainContentItems { get { return _mainContentItems; } set { _mainContentItems = value; } } 所以客户模块注册它的视图如下: layoutManager.MainContentViews.Add(“customer-help”, this.container.Resolve()); layoutManager.MainContentViews.Add(“customer-main”, this.container.Resolve()); 所以后来我在前面带了一个特定的视图我说: layoutManager.ShowMainContentView(“customer-help”); 为了获得默认视图(第一个注册视图),我说: layoutManager.ShowDefaultView(“customer”); 这很好用。 但是,我想用连字符消除“代码味道”,它将模块名称和视图名称分开,所以我想注册这个命令: layoutManager.MainContentViews.Add(“customer”,”help”, this.container.Resolve()); 但是更换我当前词典的最佳方法是什么,例如我想到的是: Dictionary (doesn’t exist) Dictionary<KeyValuePair, object> Dictionary 新的集合需要能够做到这一点: 获取带模块和视图键的视图(例如“customer”,“help”返回1视图) 按模块键获取所有视图的集合(例如“customer”返回5个视图)