Tag: wpf

使用WPF将WriteableBitmap保存到文件

我有: WriteableBitmap bmp; 我基本上想将它保存到磁盘上的文件中,如下所示: C:\bmp.png 我读了一些提到阅读的论坛: bmp.Pixels 然后将这些像素保存到Bitmap然后使用Bitmap.SaveImage()函数。 但是,我无法访问任何Pixels 。 我的WriteableBitmap显然没有任何名为Pixels属性。 我使用.NET Framework 4.0。

在WPF中动画Gif

我在seprate库中使用此代码进行gif Animating,并在我的主项目中使用xaml代码: Gif Animating(分隔文件): public class GifImage : Image { #region Memmbers private GifBitmapDecoder _gifDecoder; private Int32Animation _animation; private bool _isInitialized; #endregion Memmbers #region Properties private int FrameIndex { get { return (int)GetValue(FrameIndexProperty); } set { SetValue(FrameIndexProperty, value); } } private static readonly DependencyProperty FrameIndexProperty = DependencyProperty.Register(“FrameIndex”, typeof(int), typeof(GifImage), new FrameworkPropertyMetadata(0, new PropertyChangedCallback(ChangingFrameIndex))); private static […]

Xamarin – 从base64字符串显示图像

我是Xamarin和XAML的新手,这是我迄今为止在Android和iPhone使用的便携式项目中所做的事情(仅使用Android): Item.cs(从JSON加载) [JsonProperty(“image”)] private string ImageBase64 { get; set; } [JsonIgnore] private Xamarin.Forms.Image _image = null; [JsonIgnore] public Xamarin.Forms.Image Image { get { if (_image == null) { _image = new Xamarin.Forms.Image() { Source = Xamarin.Forms.ImageSource.FromStream(() => new MemoryStream(Convert.FromBase64String(ImageBase64))), BackgroundColor = Color.White, WidthRequest = 64, HeightRequest = 64, }; OnPropertyChanged(“Image”); } return _image; } private […]

更改WPF StackPanel模板

我正在尝试创建一个自定义样式面板( StyledStackPanel ),它与常规StackPanel相同,具有自定义样式。 例如 – 如果样式只是添加下划线,则写入: 我希望收到与我写的相同的外观: 如果StackPanel是一个Control ,我可以替换该控件的DataTemplate 。 但是,它inheritance了inheritanceFrameworkElement Panel 。 有没有办法更改StackPanel的模板?

在样式列表框ItemContainer上指定datacontext类型

在ListBox我使用语法将ItemContainer的IsSelected属性绑定到我的ViewModel的IsSelected属性。 它工作正常,但我得到一个Resharper警告: 无法在“FooSolution.BarViewModel”类型的数据上下文中解析属性“IsSelected”。 如何在ListBox ItemContainer上指定指定DataContext类型以消除此警告? 这是代码。 我有一个BarViewModel类: public ObservableCollection FooItems { get;set; } BarViewModel被分配给Control中包含ListBox的DataContext 和FooViewModel如下: public bool IsSelected { get { return isSelected; } set { if (isSelected == value) { return; } isSelected = value; RaisePropertyChanged(() => IsSelected); } } 和XAML这样: 更新我尝试使用setC设置d:DataContext ,正如HighCore所建议的那样,但不幸的是,它没有帮助,甚至打破了构建: (抛出:错误1标签’DesignInstance’在XML命名空间’schemas.microsoft.com/expression/blend/2008’中不存在;;第31行位置50.) 更新2最后,解决方案是在样式元素本身上设置d:DataContext (请参阅下面的答案):

绑定没有克隆方法,是一种有效的复制方法

我希望复制一个绑定,这是我可以在其上设置不同的源属性而不影响原始绑定。 这只是将新绑定的所有属性设置为与旧的相同的情况吗?

为什么在WPF中使用带有绑定的INotifyPropertyChanged?

我已经注意到,几乎我在互联网上找到的关于绑定的每个例子都有一个类(绑定到另一个属性),它inheritance了INotifyPropertyChanged接口,并在类’属性的set部分中使用了一个方法。 我已经尝试从绑定示例中删除该部分,并且它与该方法的工作方式相同。 这是一个例子。 我已经对它进行了修改,因此它将是一个TwoWay绑定模式,并在消息框中显示已更改的属性。 我这样做只是为了玩一点点绑定,但现在我真的不知道为什么使用该接口 编辑 XAML: Main.cs: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; namespace WpfApplication1 { /// /// Interaction logic for MainWindow.xaml /// public partial class MainWindow : Window { Binding bind; MyData mydata; […]

将XAML中的标签文本设置为字符串常量

我有一个单独的字符串常量,我必须在几个不同的XAML布局中重复使用,所以我不想复制它,而是将它绑定到一个常量。 我有一个在C#中定义字符串的类: public static class StringConstants { public static string MyString { get { return “SomeConstant”; } } } 我希望能够通过XAML设置值,如下所示: 这可以实现吗? 我已经搜索了一些示例,但我只发现了代码隐藏的样本,我想知道是否有更简单的XAML解决方案,如果我知道我只需要设置一次值在一个永远不会改变的字符串值上。

试图了解DependencyProperty

成为WPF的新手,以及它显然改变,绑定,启用和操作的惊人能力。 我正在努力对所发生的事情进行精神概述,并希望有些人可以确认或纠正我的读数。 在WPF之前,您有代理和事件。 你可以有十几个控件全部监听(通过注册到事件),所以当事件触发时,所有其他控件将自动通知并且可以采取行动,但是它们是如此编码的。 如… 从Code Behind,你会做类似的事情 GotFocus += MyMethodToDoSomething; 然后,签名方法 private void MyMethodToDoSomething(object sender, RoutedEventArgs e) { .. do whatever } 另外,通过使用标准的getter / setter,setter可以在自己的类中调用自己的方法,以便每当有人试图获取或设置值时执行某些操作 private int someValue; public int SomeValue { get { this.DoSomeOtherThing(); return someValue; } set { this.DoAnotherThing(); someValue = value; } 现在,有依赖属性和单/双向绑定。 我理解(我认为)关于模拟更多只读操作的单向方法。 无论如何,通过双向绑定,依赖关系会自动通知任何人“依赖”源或目标中的更改,而无需显式检查某些事件是否已订阅事件,框架会自动处理对各自的更改的通知控制(目标或来源)。 因此,让我通过旧的添加/编辑保存/取消维护表单完成此方案。 在较旧的框架中,如果有人单击了添加或编辑按钮,则所有数据输入字段将“启用”,其中包含新记录的空白数据或编辑现有数据。 同时,添加/编辑按钮将被禁用,但现在将启用“保存/取消”按钮。 同样,通过“保存/取消”完成后,它将禁用所有输入字段,保存/取消,并重新启用“添加/编辑”按钮。 我不太明白在这种依赖属性方案(但是)下如何处理这种类型的场景,但是我关闭了吗? 我也明白你几乎可以绑定任何东西,包括配色方案,显示/隐藏,字体等等……但是我在尝试真正掌握这些东西时采取了一些小步骤。 谢谢。

如何将集合绑定到WPF中的ListView

我有一个程序在目录中搜索符合特定条件的文件。 这个搜索过程需要很长时间,所以我必须异步调用它。 当搜索算法找到文件时,它会触发一个事件。 我的MainWindow实例侦听此事件,需要更新GUI。 如何将这些“添加”文件绑定到ListView ? 我想我可以使用ObservableCollection实例,但我无法弄清楚如何绑定它。 我已经删除了所有不相关的控件和代码。 这是两个相关的文件。 MainWindow.xaml: MainWindow.xaml.cs: using System.IO; using System.Threading.Tasks; public partial class MainWindow { private SearchLogic _backgroundSearch; private async void Search(object sender, RoutedEventArgs e) { // TODO: clear Results _backgroundSearch = new SearchLogic(“”, new DirectoryInfo(“C:\”)); _backgroundSearch.FileAdded += FileAdded; await Task.Run(new Action(_backgroundSearch.Search)); } private void FileAdded(object sender, FileAddedEventArgs eventArgs) { […]