data-binding 相关问题

将两个数据/信息源绑定在一起并使它们保持同步的一般技术。

当文本框中的数字发生变化时,Oxyplot 图表不会刷新 (WPF)

我尝试使用 MVVM 模式制作一个简单的 WPF 应用程序。它有一个文本框、一个文本块和一个 Oxyplot 图视图。 ** 视图模型类** 公共类 ViewModel :INotifyPropertyChanged { 私人

回答 1 投票 0

从继承的 DataContext 中绑定到视图模型

我正在使用 MVVM Light 更新项目。 在 UserEditView 中,有一个用户列表。选择一个用户,用户数据将出现在 StackPanel 中,可在其中进行编辑。 为了让事情变得更容易,

回答 1 投票 0

Blazor 将数据绑定到集合?

我正在尝试以编程方式使用 Blazor 生成表单,但遇到了一个问题,我需要将 InputText 值绑定到集合的成员,例如: @foreach(formPrope 中的 var prop...

回答 2 投票 0

XAML XPath 绑定,DataGrid + ComboBox 与 Xml

我真的需要一些帮助。组合框通过显示 Xml 数据按照我想要的方式工作。数据网格正在工作,从 Xml 数据中提取单个记录。什...

回答 1 投票 0

WPF:使不同但相似的控件中的标签具有相同的宽度

我有一个像这样的用户控件: 我有一个像这样的用户控件: <UserControl x:Class="TextEntryControl"> <StackPanel Orientation="Horizontal"> <TextBlock Width="{Binding MaxLabelWidth}">First Label</TextBlock> <TextBlock>Label Information</TextBlock> </StackPanel> </UserControl> 还有一个这样的: <UserControl x:Class="GroupTextEntryControl"> <StackPanel> <local:TextEntryControl DataContext="{Binding DC1}" /> <local:TextEntryControl DataContext="{Binding DC2}" /> <local:TextEntryControl DataContext="{Binding DC3}" /> </StackPanel> </UserControl> 我想让 <TextBlock Width="{Binding MaxLabelWidth}">First Label</TextBlock>中所有控件中的 GroupTextEntryControl具有相同的宽度...最长标签的宽度。 我尝试定义一个依赖属性,但我很难确定绑定到所有控件的最长宽度... 您能否分享一下这些用户控件的布局,它们之间有何关联? 因为,如果您希望宽度相同,我怀疑文本块和输入控件采用某种表格形式?在这种情况下,您应该使用简单的网格而不是单独的 StackPanel。 顺便说一句,控件的宽度可通过 ActualWidth 属性获得,您可以在用户控件的 Loaded 事件之后检索该属性。

回答 1 投票 0

在代码中获取绑定结果

我可能以错误的方式寻找这个,但是: 有没有办法通过代码获取绑定的结果值? 可能是一些显而易见的东西,但我就是找不到它。

回答 2 投票 0

使一组 WPF 扩展器专门“扩展”,即一次仅扩展一个

我有一个包含一组“Expander”项目的列表框,我想做的是使每个项目的 IsExpanded 属性都是独占的。例如,如果列表框中有 10 个 Expander,...

回答 3 投票 0

有界数据更改后重新排序 WPF DataGrid

我正在寻找一种在底层数据发生更改时重新排序 DataGrid 的方法。 (设置非常标准:DataGrid 的 ItemSource 属性绑定到 ObservableCollection;colu...

回答 5 投票 0

绑定到 RadioButtons IsChecked 在取消选中后被清除

我有一个单选按钮组,每个按钮都绑定到一个枚举属性 我有一个单选按钮组,每个按钮都绑定到一个枚举属性 <RadioButton Name="rbFixedDiscount" IsChecked="{Binding Path=DiscountType, Mode=TwoWay, Converter={StaticResource EnumConverter},ConverterParameter=Fixed, UpdateSourceTrigger=PropertyChanged}" >Fixed:</RadioButton> <RadioButton Name="rbPercentDiscount" Grid.Row="1" IsChecked="{Binding Path=DiscountType, Mode=TwoWay, Converter={StaticResource EnumConverter},ConverterParameter=Percent, UpdateSourceTrigger=PropertyChanged}">Percent:</RadioButton> <RadioButton Name="rbFreeNightsDiscount" Grid.Row="2" IsChecked="{Binding Path=DiscountType, Mode=TwoWay, Converter={StaticResource EnumConverter},ConverterParameter=FreeNights, UpdateSourceTrigger=PropertyChanged}">Free Nights:</RadioButton> 每当我在 UI 中来回单击时,只有当我单击新的 RB 时,后面的属性才会更新,如果我向后单击其中一个按钮(因此我将其设为选中 -> 未选中 -> 选中),则绑定后面的属性不会更新不刷新,它的绑定已被清除我认为这是因为在取消选中和 Item.ClearValue() 时被调用。 无论如何,我可以在来回单击时保持绑定处于活动状态。 这是一个带有单选按钮的已知且烦人的错误。幸运的是,有一些解决方法,以下是我见过的一些: 将列表框重新设计为单选按钮并使用它。 在控件模板中声明绑定。 (链接) 将每个单选按钮放在不同的组中,并通过值转换器控制其选中/未选中属性。 (链接) 希望这些解决方案之一适合您!

回答 1 投票 0

从 WPF 中的数据绑定枚举设置视觉状态

大家好,我有一个场景,我想切换 4 个不同内容控件的可见性。我设置了不透明度的视觉状态,并根据每个给定的状态折叠(参见代码。)我想要什么

回答 2 投票 0

Vuejs:根据 eslint 规则对 html 数据进行 V-HTML 数据绑定

我正在使用以下方法绑定html并显示在我的页面中。它工作完美,但是我收到来自 eslint 的警告,“v-html”指令可能导致 XSS 攻击。eslint(vue/no-v-

回答 5 投票 0

Android 数据绑定无法找到接受参数类型 * 的 setter

的设置者 我试图在数据绑定布局中声明一个变量,它的类型是整数数组,但在构建项目时出现错误 找不到接受参数类型“int[]”的 setter 如果绑定适配器提供设置器,请检查该适配器是否已 注释正确并且参数类型匹配。 xml中的变量声明 <variable name="availableGradesIndexes" type="int[]" /> <variable name="subject" type="Subject" /> 绑定适配器 @BindingAdapter("availableGradesIndexes", "subject") fun LinearLayout.bindGradeWithMarks(availableGradesIndexes: Array<Int>) { //.... } 用法 <LinearLayout android:layout_width="0dp" android:layout_height="wrap_content" android:orientation="horizontal" app:subjct="@{subject}" app:availableGradesIndexes="@{availableGradesIndexes}" tools:layout_height="@dimen/_40sdp" /> 我还尝试过什么 尝试将绑定适配器方法的类型声明为IntArray,如fun LinearLayout.bindGradeWithMarks(availableGradesIndexes: IntArray) 还尝试了List<Int>之类的fun LinearLayout.bindGradeWithMarks(availableGradesIndexes: List<Int>)和变量类型List&lt;Int&gt; 还尝试将绑定变量类型设置为 Integer 和 Integer[] 以及 List&lt;Integer&gt; 所以问题是如何使用绑定适配器绑定整数列表或数组?! 因为Kotlin中的Array就是Java中的Integer[]。 尝试在 Java 中使用 IntArray 它将是 int[]。 我用 IntArray 尝试了你的示例,它有效。 @BindingAdapter("availableGradesIndexes") fun LinearLayout.bindGradeWithMarks( availableGradesIndexes: IntArray ) { } 你能展示你的布局 XML 吗? <?xml version="1.0" encoding="utf-8"?> <layout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <data> <variable name="availableGradesIndexes" type="int[]" /> </data> <LinearLayout android:layout_width="0dp" android:layout_height="wrap_content" android:orientation="horizontal" app:availableGradesIndexes="@{availableGradesIndexes}" tools:layout_height="match_parent" /> </layout> 您可以使用 int[] 代替 List,但这需要将 List 类导入到布局中,以便能够将其用作 type 变量的 availableGradesIndexes: <data> <import type="java.util.List" /> <variable name="availableGradesIndexes" type="List&lt;Integer&gt;" /> </data> 然后您可以使用 List<Int> 将其应用到 BindingAdapter: @BindingAdapter("availableGradesIndexes") fun LinearLayout.bindGradeWithMarks(availableGradesIndexes: List<Int>) { //.... Log.d("LOG_TAG", "bindGradeWithMarks: $availableGradesIndexes") // For testing } 如果你想使用int[]数组;无需进口: <data> <variable name="availableGradesIndexes" type="int[]" /> </data> 适配器: @BindingAdapter("availableGradesIndexes") @JvmStatic fun LinearLayout.bindGradeWithMarks(availableGradesIndexes: IntArray) { //.... Log.d("LOG_TAG", "bindGradeWithMarks: ${availableGradesIndexes.toList()}") } 更新: Cannot find a setter for <android.widget.LinearLayout app:availableGradesIndexes> that accepts parameter type 'java.util.List<java.lang.Integer>' 这意味着布局中不识别BidningAdapter方法;所以只需确保将其添加到伴随对象中,并用 @JvmStatic: 进行注释 class BindingAdapters { companion object { @BindingAdapter("availableGradesIndexes") @JvmStatic fun LinearLayout.bindGradeWithMarks(availableGradesIndexes: List<Int>) { //.... Log.d("LOG_TAG", "bindGradeWithMarks: $availableGradesIndexes") } } } 问题出在另一个属性名称上,我不知道为什么错误消息没有提到它!! <LinearLayout android:layout_width="0dp" android:layout_height="wrap_content" android:orientation="horizontal" app:subjct="@{subject}" //the attribute name was messing a letter (subject) app:availableGradesIndexes="@{availableGradesIndexes}" tools:layout_height="@dimen/_40sdp" /> 以 Kotlin 为例: 只需将您的函数放入伴生对象中即可。 companion object { @BindingAdapter(" app:availableGradesIndexes", "subject") @JvmStatic fun LinearLayout.bindGradeWithMarks( availableGradesIndexes: Array<Int>) { //.... } } 确保属性应该相同 app:availableGradesIndexes="@{availableGradesIndexes}" 我也遇到了标题中提到的类似问题。我试图通过数据绑定来更改 <include> 标签布局的可见性。像这样 <include android:id="@+id/viewNoData" layout="@layout/layout_no_data" android:layout_width="0dp" android:layout_height="wrap_content" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/quickActionRv" android:visibility="@{case== Case.NoData? View.VISIBLE : View.GONE} /> 解决方案是我必须用 包裹我的子布局 layout_no_data <layout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <data> </data> Your content layout </layout> 希望它能帮助别人。

回答 5 投票 0

WinForms DataGridView 行刷新问题

背景: WinForms 表单有两个 DataGridView 控件,DataGridView1 和 DataGridView2(SelectionMode 属性设置为 FullRowSelect),如上传的图片所示。 DataGridView

回答 1 投票 0

从 Generic.xml 中的样式/模板访问静态对象?

我有一个名为 LoadAnimAngle 的双精度值,它仅保存旋转加载图标的角度,该图标会随着时间的推移而旋转。该变量在我的 MainViewModel 类中定义。我也在用这个

回答 2 投票 0

UNO Windows 和 WASM 渲染不一致

Windows UI Desktop 和 WASM 之间的 UNO 跨平台应用程序中 xaml 的渲染方式存在差异。 这是 Windows UI 桌面渲染: 在 WASM 渲染中,时间选择器是

回答 1 投票 0

使用监听器绑定的android数据绑定错误

我将视图模型中的侦听器绑定到片段 xml 中 FAB 的单击。 我的片段 xml 显示了 FAB。 我将视图模型中的侦听器绑定到片段 xml 中 FAB 的单击。 我的片段 xml 显示了 FAB。 <data> <variable name="vehicleViewModel" type="com.buildit4me.autonance.ui.VehicleViewModel" /> <variable name="launcher" type="androidx.activity.result.ActivityResultLauncher" /> <com.google.android.material.floatingactionbutton.FloatingActionButton android:id="@+id/fabVehicles" android:contentDescription="@string/fab_content_description" style="@style/FAB" android:onClick="@{(view) -> vehicleViewModel.FabOnClick(view,launcher)}" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" /> 我的 Viewmodel 监听器 public void FabOnClick( View view, ActivityResultLauncher<Intent> launcher){ Intent intent= new Intent(view.getContext(), AddNewEntityActivity.class); intent.putExtra(getApplication().getResources().getString(R.string.fragmentID), R.layout.fragment_add_vehicle); launcher.launch(intent); } 在我的片段中 ActivityResultLauncher<Intent> launcher= registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), new ActivityResultCallback<>() { @Override public void onActivityResult(ActivityResult result) { if(result.getResultCode()== Activity.RESULT_OK){ mVehicleViewModel.getAllVehicles(); } String msg; try { msg = result.getData().getStringExtra(getResources().getString(R.string.intent_msg)); } catch( NullPointerException e){ msg=null; } Utils.displaySnackbar(binding.recyclerviewVehicles,binding.fabVehicles,msg); } }); public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { // Inflate the layout for this fragment binding= DataBindingUtil.inflate(inflater,R.layout.fragment_vehicles,container,false); mVehicleViewModel = new ViewModelProvider(requireActivity()).get(VehicleViewModel.class); binding.setVehicleViewModel(mVehicleViewModel); binding.setLauncher(launcher); 我构建项目时的错误。 [databinding] {"msg":"cannot find method FabOnClick(android.view.View, androidx.activity.result.ActivityResultLauncher) in class com.buildit4me.autonance.ui.VehicleViewModel","file":"app/src/main/res/layout/fragment_vehicles.xml","pos":[{"line0":30,"col0":37,"line1":30,"col1":78}]} 我尝试使缓存失效以清除生成的绑定文件,但仍然收到错误。 我认为问题的原因在于XML(androidx.activity.result.ActivityResultLauncher)和Fragment(ActivityResultLauncher)中的launcher类型之间的差异。 您可以尝试替代解决方案。不绑定ActivityResultLauncher,使用该实例内部片段。 <com.google.android.material.floatingactionbutton.FloatingActionButton android:id="@+id/fabVehicles" android:contentDescription="@string/fab_content_description" style="@style/FAB" android:onClick="@{(view) -> vehicleViewModel::FabOnClick}" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" /> 片段中 public void FabOnClick(){ Intent intent= new Intent(getContext(), AddNewEntityActivity.class); // Can use context of fragment intent.putExtra(getApplication().getResources().getString(R.string.fragmentID), R.layout.fragment_add_vehicle); launcher.launch(intent); } 希望有帮助

回答 1 投票 0

数据绑定到只能由函数修改的属性

我有一个可观察的数据集合,不得在使用函数之外对其进行修改。因此它必须是私有财产。但是我需要将它暴露给视图以便我可以绑定...

回答 1 投票 0

WPF通过代码与passwordboxassistant绑定密码

我正在尝试创建一个登录屏幕,但我想通过代码完成所有操作。 因此通过 C# 生成完整的 UI。 但我正在使用 MVVM 模型,并且我的用户名上有数据绑定,但这...

回答 1 投票 0

使用数据绑定 WPF 的每个项目的列表框颜色

我使用显示不同测试的列表框,当测试正常时我想以绿色显示测试,当测试不正常时以红色显示测试,我使用数据绑定来显示测试列表和...

回答 1 投票 0

如何在 C# 中创建可观察的哈希集?

目前我正在 WPF 应用程序中使用 ObservableCollection,该应用程序是 Conway 生命游戏的实现,对于大约 500 个单元格运行良好,但之后它开始...

回答 4 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.