说我有这样的界面:
public interface ISomeInterface
{
...
}
Run Code Online (Sandbox Code Playgroud)
我还有几个实现这个接口的类;
public class SomeClass : ISomeInterface
{
...
}
Run Code Online (Sandbox Code Playgroud)
现在我有一个WPF ListBox列出了ISomeInterface的项目,使用自定义DataTemplate.
数据绑定引擎显然不会(我已经弄明白)允许我绑定到接口属性 - 它看到该对象是一个SomeClass对象,并且数据只显示SomeClass应该碰巧有绑定属性可用非接口属性.
我怎么能告诉DataTemplate好像每个对象都是一个ISomeInterface,而不是SomeClass等?
谢谢!
我想将System.Windows.Media.Color值转换为System.Windows.Media.Brush.颜色值被数据绑定到Rectangle对象的Fill属性.Fill属性采用Brush对象,因此我需要一个IValueConverter对象来执行转换.
WPF中是否有内置转换器,还是需要创建自己的转换器?如果有必要,我该如何创建自己的?
如果我错了,请纠正我.两者都可用于数据绑定.
问题是何时使用@ModelAttribute?
@RequestMapping(value="/owners/{ownerId}/pets/{petId}/edit", method = RequestMethod.POST)
public String processSubmit(@ModelAttribute Pet pet) { }
Run Code Online (Sandbox Code Playgroud)
另外,何时使用@RequestBody?
@RequestMapping(value = "/user/savecontact", method = RequestMethod.POST
public String saveContact(@RequestBody Contact contact){ }
Run Code Online (Sandbox Code Playgroud)
根据我的理解,两者都有类似的用途.
谢谢!!
将AS gradle版本升级到2.3.0后,数据绑定会遇到警告:
警告:selectMap [index]是一个盒装字段但需要取消装箱才能执行selectMap [index]?@android:颜色/白色:@android:颜色/透明.这可能会导致NPE,因此数据绑定将安全地取消它.您可以更改表达式并使用safeUnbox()显式地包装selectMap [index]以防止出现警告
selectMap是一个ObservableMap,然后我搜索这个警告,但只进行了一些讨论而没有修复它
Android Studio 2.3.0-alpha1:Databinding + int拆箱会导致编译错误
我按照链接的方式,修改selectMap[index]为safeUnbox(selectMap[index])但语法错误.
所以任何人都知道如何修复此警告?
编辑:这是xml文件代码
<?xml version="1.0" encoding="utf-8"?>
Run Code Online (Sandbox Code Playgroud)
<data class="SupportCountryViewHolderBinding">
<variable
name="viewModel"
type="com.goodarc.care_about.activity.account.support_country.SupportCountryHolderViewModel" />
<variable
name="dataSource"
type="com.goodarc.care_about.module.assets_file.SupportCountry" />
<variable
name="selectMap"
type="android.databinding.ObservableMap<Integer, Boolean>" />
<variable
name="index"
type="int" />
</data>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@{selectMap[index] ? @android:color/white : @android:color/transparent}"
android:onClick="@{(v) -> viewModel.onItemSelectListener(selectMap, index)}"
android:orientation="vertical"
android:padding="20dp">
<TextView
style="@style/TitleLabel2"
android:layout_gravity="center_vertical|start"
android:text="@{dataSource.display}"
android:textColor="@{selectMap[index] ? @android:color/black : @android:color/white}"
tools:text="Taiwan (+886)" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
构建成功,但警告出来(我在上面).
data-binding android warnings android-gradle-plugin android-databinding
有没有办法使用现有的WPF BooleanToVisibilityConverter转换器但是将False值转换为Hidden而不是默认的Collapsed,或者我应该自己编写?我正在进行一个项目,在这个项目中,做这样简单的事情会带来巨大的开销(共享的东西进入一个单独的解决方案,而重建/签入/合并过程是一个过度生长的变异庞然大物的过程),所以我更愿意,如果我可以将参数传递给现有参数,而不是跳过刚才提到的箍.
我通过代码将文本框数据绑定到可以为空的int.如果我从文本框中删除数据,它会给我一个验证错误(它周围的红色边框).
这是我的绑定代码:
ZipBinding = new Binding("Zip");
ZipBinding.Source = Address;
zipTextBox.SetBinding(TextBox.TextProperty, ZipBinding);
public Int32? Zip { get { ... } set { ... } }
Run Code Online (Sandbox Code Playgroud)
它清楚地标记为Nullable,那么为什么当我清除文本框时WPF想给我一个验证问题?
我正在尝试将大型集合绑定到ComboBox,并且在打开ComboBox的弹出窗口时遇到了性能问题.我搜索了互联网,发现使用VirtualizingStackPanel作为项目面板模板可能有所帮助,但它只能帮助部分.如果我将一个大型集合绑定到一个ComboBox,我可以非常快速地打开弹出窗口,这没关系,但如果之后我将另一个集合绑定到一个ComboBox并尝试再次打开弹出窗口,它会变得非常慢.如果您为空ComboBox打开弹出窗口,然后绑定大型集合并尝试再次打开弹出窗口,则会发生同样的情况 - 弹出窗口打开前需要几秒钟.
这是XAML:
<ComboBox Name="cbBlah">
<ComboBox.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel />
</ItemsPanelTemplate>
</ComboBox.ItemsPanel>
</ComboBox>
Run Code Online (Sandbox Code Playgroud)
和绑定的示例代码重现问题:
var list = new List<string>();
for (var i = 0; i < new Random().Next(9000, 10000); i++)
list.Add(i.ToString());
cbBlah.ItemsSource = list;
Run Code Online (Sandbox Code Playgroud)
我试图使虚拟化堆栈面板看起来像这样:
<VirtualizingStackPanel VirtualizingStackPanel.IsVirtualizing="True" VirtualizingStackPanel.VirtualizationMode="Recycling" />
Run Code Online (Sandbox Code Playgroud)
但它没有帮助,似乎忽略了VirtualizationMode,因此弹出窗口仅在第一次打开非常快,然后,每次绑定更改后,它都非常慢.
更新:我想过每次都没有绑定新的集合,但是绑定一次ObservableCollection然后只是改变它的内容.同样的事情,一旦收集内容发生变化,打开一个弹出窗口仍然需要几秒钟:(
我正在使用Android Studio 2.0 Preview 4.我使用的是Android SDK工具25 rc1.无论清理/重建项目多少次,此错误都会持续存在.文件 - >无效缓存并重新启动也不起作用.我无法运行最基本的数据绑定示例.
build.gradle文件
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion "23.0.2"
defaultConfig {
applicationId "com.example.chiragshenoy.myapplication"
minSdkVersion 15
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
dataBinding {
enabled = true
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.1.1'
compile 'com.android.support:design:23.1.1'
}
Run Code Online (Sandbox Code Playgroud)
MainActivity.java
package com.example.chiragshenoy.myapplication;
import android.databinding.DataBindingUtil;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.Menu;
import android.view.MenuItem;
public class MainActivity …Run Code Online (Sandbox Code Playgroud) 什么在UWP中使用,Binding或者x:Bind它们之间有什么区别?
因为我看到人们使用的很多帖子,Binding我只x:Bind在UWP中绑定.
在MSDN首页只说:"通过创建装订物体{x:Bind}并{Binding}在很大程度上是功能相当的." 那x:Bind是快.
但它们之间有什么区别?
因为"在很大程度上与功能相当"并不意味着相当.
我的报价链接:MSDN
所以我的问题是:
使用Binding或x有什么区别:在UWP中绑定?
是否可以onClick使用数据绑定库将自定义参数传递给方法?我有我的布局xml文件,我需要使用onClickListener:
<?xml version="1.0" encoding="utf-8"?>
<layout ...>
<data>
<variable
name="viewModel"
type="com.productivity.tiktak.ui.tracker.viewModel.CategoryViewModel"/>
<variable
name="callback"
type="com.productivity.tiktak.ui.tracker.TrackerAdapter"/>
</data>
<android.support.v7.widget.CardView
android:onClick="@{callback.onCategoryClick(viewModel)}"
...
android:layout_width="match_parent"
android:layout_height="wrap_content">
<!-- ... Some stuff -->
</android.support.v7.widget.CardView>
</layout>
Run Code Online (Sandbox Code Playgroud)
我在这里有我的点击处理程序代码:
public void onCategoryClick(View view, CategoryViewModel categoryViewModel)
{
//handler code...
}
Run Code Online (Sandbox Code Playgroud)
是否可以将我的CategoryViewModel对象从xml传递到单击处理程序?
data-binding ×10
wpf ×5
android ×3
c# ×2
xaml ×2
.net ×1
colors ×1
combobox ×1
converter ×1
java ×1
spring ×1
spring-mvc ×1
uwp ×1
validation ×1
warnings ×1
wpf-controls ×1
xml ×1