- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一组对象存储在 CollectionViewSource
中并绑定(bind)到 DataGrid
. 我想显示当前在 DataGrid
中选择的对象的“详细 View ”
。我可以使用 CollectionViewSource.View.CurrentItem
获取当前对象.
Lớp học của tôi
{
[IsImportant]
AProperty{}
AnotherProperty{}
[IsImportant]
YetAnotherProperty{}
}
我想做的是在列表框中为每个标有IsImportant
的属性显示一个标签(带有属性名称)和一个控件(用于编辑)属性。绑定(bind)必须在所做的编辑、DataGrid 和支持对象之间起作用。显示的控件应根据属性的类型而有所不同,可以是 Boolean
, sợi dây
hoặc IEnumerable
(我写了一个 IValueConverter
来在可枚举字符串和换行符分隔字符串之间进行转换)。
有谁知道实现这个的方法吗?我目前可以通过以下方式显示每个属性的值,但编辑它们不会更新支持对象:
listBox.ItemsSource = from p in typeof(MyClass).GetProperties()
where p.IsDefined(typeof(IsImportant), false)
select p.GetValue(_collectionViewSource.View.CurrentItem, null);
澄清一下,我希望这种情况“自动”发生,而无需在 XAML 中手动指定属性名称。如果我可以在运行时根据哪些属性用特性标记来动态添加到 XAML , 那也行。
câu trả lời hay nhất
您想要一个带有属性名称标签的控件和用于编辑属性值的控件,因此首先创建一个包装特定对象的属性的类作为该控件的 DataContext:
public class PropertyValue
{
private PropertyInfo propertyInfo;
private object baseObject;
public PropertyValue(PropertyInfo propertyInfo, object baseObject)
{
this.propertyInfo = propertyInfo;
this.baseObject = baseObject;
}
public string Name { get { return propertyInfo.Name; } }
public Type PropertyType { get { return propertyInfo.PropertyType; } }
public object Value
{
get { return propertyInfo.GetValue(baseObject, null); }
set { propertyInfo.SetValue(baseObject, value, null); }
}
}
您想将 ListBox 的 ItemsSource 绑定(bind)到一个对象,以便用这些控件填充它,因此创建一个 IValueConverter,它将一个对象转换为其重要属性的 PropertyValue 对象列表:
public class PropertyValueConverter
: IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
trở lại
from p in value.GetType().GetProperties()
where p.IsDefined(typeof(IsImportant), false)
select new PropertyValue(p, value);
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return Binding.DoNothing;
}
}
最后一个技巧是您希望编辑控件根据属性的类型而变化。您可以通过使用 ContentControl 并将 ContentTemplate 设置为基于属性类型的各种编辑器模板之一来实现。如果属性是 bool 值,则此示例使用 CheckBox,否则使用 TextBox:
然后,您可以将 ListBox 创建为:
关于c# - WPF:将列表动态绑定(bind)到(某些)对象的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3152557/
Tôi không biết phải làm gì... function f1() { var x = 10; function f2(fx) { var x = 6;
Sự khác biệt giữa ràng buộc sớm (liên kết) và ràng buộc muộn (liên kết) là gì? Câu trả lời hay nhất Câu trả lời ngắn gọn là liên kết sớm (hoặc tĩnh) đề cập đến liên kết thời gian biên dịch (liên kết) và liên kết muộn (hoặc động) đề cập đến liên kết thời gian chạy (liên kết) (ví dụ:
Cách sử dụng Binding(get: { }, set: { }) để tùy chỉnh các thuộc tính liên kết (bind) và @Binding trên SwiftUI View. Tôi đã sử dụng thành công ràng buộc tùy chỉnh này với @State
Tôi thường thấy mình gặp phải vấn đề trong đó hai giá trị (có liên quan) của một điều khiển được cập nhật và cả hai đều kích hoạt các hoạt động tốn kém hoặc điều khiển có thể tạm thời ở trạng thái không nhất quán. Ví dụ: hãy xem xét một ràng buộc dữ liệu trong đó hai giá trị (x,y) được trừ lẫn nhau và kết quả cuối cùng là
Tôi muốn kiểm soát chiều cao và chiều rộng của một trong các cửa sổ của mình thông qua ViewModel. Điều này có vẻ đơn giản. Nhưng không. Nó không hoạt động. Nó kiểm tra Chiều rộng của ViewModel chứ không phải Chiều cao. Điều kỳ lạ là nếu tôi chuyển W.
Sự khác biệt giữa ràng buộc một lần và ràng buộc một chiều trong UI5 là gì? Có bất kỳ trường hợp sử dụng cụ thể nào của người dùng mà tôi sẽ sử dụng chúng không? Tôi không thể nhận được nhiều thông tin từ tài liệu. Câu trả lời hay nhất Một chiều Công dụng: Luồng dữ liệu một chiều. Thay đổi dữ liệu mô hình (ví dụ: thông qua
(định nghĩa make (lambda (x) (lambda (y) (cons x (list y)))) (let ((x 7) (p (make 4))) (cons
Mặc dù tôi hiểu ít nhiều về ràng buộc ngôn ngữ nhưng tôi vẫn gặp khó khăn trong việc hiểu cách chúng hoạt động. Ví dụ: có ai có thể giải thích cách tạo liên kết Java cho WinAPI không? Câu trả lời hay nhất nếu bạn tìm kiếm Ngoại Vui
Có ai có thể giải thích tại sao tôi có thể kết nối lại danh sách nhưng không thể + không? (liên kết [vectơ danh sách] (danh sách 1 3)) (liên kết [danh sách +] (danh sách 1 3)) (bi
Tôi thực sự thích Caliburn và ràng buộc quy ước đặt tên, đồng thời tôi ngạc nhiên về mức độ hiển thị khác với quy ước "CanNAME" được sử dụng để bảo vệ Hành động. Theo như tôi biết, BooleanToVisibilityConver
Tôi hiểu cách triển khai liên kết động và sự khác biệt giữa liên kết tĩnh và liên kết động, nhưng tôi không thể hiểu được định nghĩa của liên kết động. Về cơ bản nó là một loại ràng buộc thời gian chạy. Câu trả lời hay nhất Về cơ bản,
http://jsfiddle.net/3NRsd/ var foo = $("div").bind("click", function() { $("div").animate({"hei
Vấn đề này đang khiến tôi phát điên... Tôi có một điều khiển người dùng có FormView cho các thao tác chèn và GridView cho tất cả các thao tác khác. Trong cả hai điều khiển, tôi có DropDownList như thế này: '
Tôi có một ObservableCollection được liên kết với địa chỉ của ListBox. Sau đó, trong ItemTemplate, tôi sử dụng {Binding .} để liên kết với bản ghi địa chỉ hiện tại. cái này
Nếu tôi có mã js/loại trực tiếp đơn giản sau: .js(Xem mô hình): var image = ko.observable('http://placehold.it/300x150');
Tôi đang phát triển thuộc tính tùy chỉnh trên aurelia cho phép người dùng chọn từ danh sách khi nhập vùng văn bản. Ví dụ: cách sử dụng sẽ như sau: Như bạn có thể nhận thấy, tính năng tự động hoàn thành là thuộc tính. Bây giờ, khi tôi muốn hiển thị lời nhắc, tôi muốn tùy chỉnh
Tôi đang sử dụng EventEmitter2 làm bus tin nhắn bên trong ứng dụng của mình. Bây giờ tôi cần liên kết và hủy liên kết một số trình xử lý sự kiện. Vì tôi cũng muốn chúng liên kết để thêm chúng vào ngữ cảnh nhất định, nên tôi kết thúc bằng
Tôi có lệnh gọi hàm sau: $(".selector").on("click", callback.bind(this, param1, param2)); Trong hàm gọi lại của mình, tôi muốn sử dụng thứ của bind(bind)
Tôi hiện đang thử nghiệm các ràng buộc biên dịch mới và (một lần nữa) đã đạt đến điểm mà tôi thiếu một phần nhỏ của câu đố: tại sao tôi phải gọi Bindings.Update? Cho đến bây giờ tôi nghĩ việc triển khai INotifyPropertyChang
Tôi đang đọc một cuốn sách về viết khung JavaScript và tìm thấy mã này. Nhưng tôi không hiểu nó hoạt động như thế nào, đặc biệt là cách sử dụng bind.bind? Có ai biết không? var bind = Function.prot
Tôi là một lập trình viên xuất sắc, rất giỏi!