日韩福利首页在线观看网站-日韩福利免费网站视频在线-日韩福利局二区视频-日韩福利-日韩二区在线-日韩二区三区四区-日韩二区三-日韩电影中文字幕

半岛外围网上直营

logo DevExpress WinForm中文手冊

數據和屬性綁定


立即下載DevExpress WinForms

根據您綁定的屬性,有三種可能的情況:

常規綁定——ViewModel屬性綁定到任何不可編輯的View元素的屬性。由于元素不可編輯,因此不需要將更新通知發送回綁定屬性(單向綁定)。

數據綁定——Model屬性(數據字段)綁定到編輯器屬性,如果用戶可以更改編輯器值,則需要更新綁定屬性(雙向綁定)。

屬性依賴性——綁定同一個ViewModel的兩個屬性。

常規綁定

如果需要將數據從一個屬性傳遞到另一個ViewModel的屬性,您可以使用標準的數據綁定API,或者推薦使用DevExpress MvvmContext.SetBinding方法。

例如,視圖有一個沒有文本的,ViewModel有一個可綁定的字符串“LabelText”屬性,使用以下任何一種方法將屬性值傳遞給此Label。

form

C#:

//ViewModel code
[POCOViewModel()]
public class Form1ViewModel {
public Form1ViewModel() {
LabelText = "Value stored in ViewModel";
}
public virtual string LabelText { get; set; }
}

//View code
//option #1 (recommended): SetBinding method
var fluent = mvvmContext1.OfType<Form1ViewModel>();
fluent.SetBinding(labelControl1, l => l.Text, x=>x.LabelText);
//option #2: DataBindings
Form1ViewModel viewModel = mvvmContext1.GetViewModel<Form1ViewModel>();
labelControl1.DataBindings.Add("Text", viewModel, "LabelText");

VB.NET:

'ViewModel code
<POCOViewModel()>
Public Class Form1ViewModel
Public Sub New()
LabelText = "Value stored in ViewModel"
End Sub
Public Overridable Property LabelText() As String
End Class

'View code
'option #1 (recommended): SetBinding method
Dim fluent = mvvmContext1.OfType(Of Form1ViewModel)()
fluent.SetBinding(labelControl1, Function(l) l.Text, Function(x) x.LabelText)
'option #2: DataBindings
Dim viewModel As Form1ViewModel = mvvmContext1.GetViewModel(Of Form1ViewModel)()
labelControl1.DataBindings.Add("Text", viewModel, "LabelText")

提示:如果需要將編輯器綁定到屬性,并選擇特定的更新模式,請使用標準數據綁定而不是SetBinding方法(請參閱數據綁定部分)。

POCO視圖模型中的更新通知

如果綁定屬性的值可以更改,那么將此更改通知相關屬性非常重要,為此向相關屬性發送更新通知。如果使用的是POCO ViewModels那么 DevExpress框架可以發送這些通知。

在MVVM應用程序中,每個視圖都有一個相關的ViewModel。當使用DevExpress MVVM框架時,您應該為每個視圖添加一個MvvmContext組件,并將該組件指向與該視圖相關的ViewModel,我們建議在設計時通過組件的智能標簽菜單來完成這個操作。

mvvm


您還可以在代碼中使用ViewModelType屬性來完成此操作。

C#:

mvvmContext.ViewModelType = typeof(ViewModel);

VB.NET:

mvvmContext.ViewModelType = GetType(ViewModel)

框架將分配給MvvmContext組件的每個ViewModel視為POCO (Plain Old CRL Object) ViewModel,POCO視圖模型有許多命名和語法約定,如果您遵循它們,框架就會預測您想要做什么并相應地采取行動。例如,更新通知自動發送到(從)“正確”聲明的屬性。

創建一個 public virtual auto-implemented屬性,來允許框架向該屬性發送更新通知,還可以將屬性設置器聲明為protected。

C#:

public virtual string Name { get; set; }
public virtual int ID { get; protected set; }

VB.NET:

Public Overridable Property Name() As String
Public Overridable Property ID() As Integer
Get
Return _privateID
End Get
Protected Set(ByVal value As Integer)
_privateID = value
End Set
End Property

提示:框架會忽略帶有支持字段的屬性,為了能夠綁定這些屬性,可以用DevExpress.Mvvm.DataAnnotations.BindableProperty屬性來修飾它們。

C#:

using DevExpress.Mvvm.DataAnnotations;
//. . .
string name;
[BindableProperty]
public virtual string Name {
get { return name; }
set { name = value; }
}

VB.NET:

Imports DevExpress.Mvvm.DataAnnotations
'. . .
Private name_field As String
<BindableProperty>
Public Overridable Property Name() As String
Get
Return name_field
End Get
Set(ByVal value As String)
name_field = value
End Set
End Property

如果希望在每次更新屬性時調用特定的方法,請在同一屬性中指定該方法的名稱。

C#:

[BindableProperty(OnPropertyChangedMethodName= "OnLookUpEdit1ValueChanged")]
public virtual string Name {
// ...
}

VB.NET:

<BindableProperty(OnPropertyChangedMethodName:= "OnLookUpEdit1ValueChanged")>
Public Overridable ReadOnly Property Name() As String
' ...
End Property

在Bindable Properties演示中,一個Label顯示了TextEdit編輯器的值。TextEdit被綁定到自動實現的虛擬Text屬性(存儲原始編輯器值),Label被綁定到Title(存儲格式化的“Text”值)。

由于“Text”屬性遵循POCO命名約定,所以TextEdit-to-Text綁定是雙向的:當ViewModel屬性改變時,編輯器更新其值,當用戶修改編輯器文本時,ViewModel屬性更新其值。Label-to-Title綁定是單向的,因為“Title”屬性沒有公共集方法。在這個設置中,我們不需要對“Title”進行雙向綁定,因為用戶不能更改Label文本。

DevExpress VCL圖表控件

運行演示

C#:

//View code
var fluent = mvvmContext.OfType<ViewModel>();
fluent.SetBinding(editor, ed => ed.EditValue, x => x.Text);
fluent.SetBinding(label, lbl => lbl.Text, x => x.Title);

//ViewModel code
public class ViewModel {
public virtual string Text { get; set; }
public string Title {
get {
if(Text == null)
return "Title: (Null)";
if(Text.Length == 0)
return "Title: (Empty)";
if(string.IsNullOrWhiteSpace(Text))
return "Title: (Whitespace)";
return "Title: " + Text;
}
}
}

VB.NET:

'View code
Dim fluent = mvvmContext.OfType(Of ViewModel)()
fluent.SetBinding(editor, Function(ed) ed.EditValue, Function(x) x.Text)
fluent.SetBinding(label, Function(lbl) lbl.Text, Function(x) x.Title)

'ViewModel code
Public Class ViewModel
Public Overridable Property Text() As String
Public ReadOnly Property Title() As String
Get
If Text Is Nothing Then
Return "Title: (Null)"
End If
If Text.Length = 0 Then
Return "Title: (Empty)"
End If
If String.IsNullOrWhiteSpace(Text) Then
Return "Title: (Whitespace)"
End If
Return "Title: " & Text
End Get
End Property
End Class

注意:上面的代碼演示了“Title”和“Text”屬性之間的區別,但并不完整,demo模塊還使用屬性依賴來在“Text”發生變化時更新“Title”,運行演示可以查看完整的代碼。

綁定嵌套和非poco視圖模型的屬性

如果您需要綁定一個嵌套的ViewModel屬性,使用DevExpress.Mvvm.POCO.ViewModelSource.Create方法來創建這個嵌套ViewModel的實例,您可以通過 parent ViewModel訪問它,視圖綁定語法使用相同的SetBinding方法。

運行演示

C#:

//Nested ViewModel
public class NestedViewModel {
public virtual string Text { get; set; }
}

//Parent ViewModel
public class ViewModelWithChild {
public ViewModelWithChild() {
Child = ViewModelSource.Create<NestedViewModel>();
}
public NestedViewModel Child {
get;
private set;
}
}

//View code
var fluent = mvvmContext.OfType<ViewModelWithChild>();
fluent.SetBinding(editor, ed => ed.EditValue, x => x.Child.Text);

VB.NET:

'Nested ViewModel
Public Class NestedViewModel
Public Overridable Property Text() As String
End Class

'Parent ViewModel
Public Class ViewModelWithChild
Public Sub New()
Child = ViewModelSource.Create(Of NestedViewModel)()
End Sub
Private privateChild As NestedViewModel
Public Property Child() As NestedViewModel
Get
Return privateChild
End Get
Private Set(ByVal value As NestedViewModel)
privateChild = value
End Set
End Property
End Class

'View code
Dim fluent = mvvmContext.OfType(Of ViewModelWithChild)()
fluent.SetBinding(editor, Function(ed) ed.EditValue, Function(x) x.Child.Text)

如果不使用POCO模型,則框架不會自動發送更新通知。要在這種情況下發送通知,實現接口或創建-PropertyName-Changed事件,注意不能使用mvvmContext.ViewModelType屬性,您應該調用mvvmContext.SetViewModel方法將ViewModel實例傳遞給組件。

運行演示

C#:

//ViewModel code
public class ObjectWithTextAndTitle {
string textCore;

public string Text {
get { return textCore; }
set {
if(textCore == value) return;
textCore = value;
OnTextChanged();
}
}
protected virtual void OnTextChanged() {
RaiseTextChanged();
}
protected void RaiseTextChanged() {
var handler = TextChanged;
if(handler != null) handler(this, EventArgs.Empty);
}
public event EventHandler TextChanged;
}

//View code
mvvmContext.SetViewModel(typeof(ObjectWithTextAndTitle), viewModelInstance);
var fluent = mvvmContext.OfType<ObjectWithTextAndTitle>();
fluent.SetBinding(editor, ed => ed.EditValue, x => x.Text);

VB.NET:

'ViewModel code
Public Class ObjectWithTextAndTitle
Private textCore As String

Public Property Text() As String
Get
Return textCore
End Get
Set(ByVal value As String)
If textCore = value Then
Return
End If
textCore = value
OnTextChanged()
End Set
End Property
Protected Overridable Sub OnTextChanged()
RaiseTextChanged()
End Sub
Protected Sub RaiseTextChanged()
Dim handler = TextChangedEvent
If handler IsNot Nothing Then
handler(Me, EventArgs.Empty)
End If
End Sub
Public Event TextChanged As EventHandler
End Class

'View code
mvvmContext.SetViewModel(GetType(ObjectWithTextAndTitle), viewModelInstance)
Dim fluent = mvvmContext.OfType(Of ObjectWithTextAndTitle)()
fluent.SetBinding(editor, Function(ed) ed.EditValue, Function(x) x.Text)

數據綁定

要將編輯器綁定到Model屬性,請將 添加到View并使用標準的數據綁定API,可選的參數允許您指定屬性是否在編輯器值更改時更新其值,以及(如果是)是應該立即發生還是在驗證編輯器時發生。

C#:

editor.DataBindings.Add(...);

VB.NET:

editor.DataBindings.Add(...)

實體屬性綁定演示定義了一個自定義Entity類,此類的實例用作數據記錄并具有ID和Text字段,兩個數據字段都綁定到編輯器,并且BindingSource組件存儲活動Entity對象。

C#:

//View
mvvmContext.ViewModelType = typeof(ViewModel);
var fluentApi = mvvmContext.OfType<ViewModel>();
// Create a BindingSource and populate it with a data object.
//When a user modifies this object, the "Update" method is called
BindingSource entityBindingSource = new BindingSource();
entityBindingSource.DataSource = typeof(Entity);
fluentApi.SetObjectDataSourceBinding(entityBindingSource, x => x.Entity, x => x.Update());
// Data Bindings
idEditor.DataBindings.Add(
new Binding("EditValue", entityBindingSource, "ID"));
textEditor.DataBindings.Add(
new Binding("EditValue", entityBindingSource, "Text", true, DataSourceUpdateMode.OnPropertyChanged));

//ViewModel
public class ViewModel {
//...
public virtual Entity Entity {
get;
set;
}
//...
}

//Model
public class Entity {
public Entity(int id) {
this.ID = id;
this.Text = "Entity " + id.ToString();
}
public int ID { get; private set; }
public string Text { get; set; }
}

VB.NET:

'View
mvvmContext.ViewModelType = GetType(ViewModel)
Dim fluentApi = mvvmContext.OfType(Of ViewModel)()
' Create a BindingSource and populate it with a data object.
'When a user modifies this object, the "Update" method is called
Dim entityBindingSource As New BindingSource()
entityBindingSource.DataSource = GetType(Entity)
fluentApi.SetObjectDataSourceBinding(entityBindingSource, Function(x) x.Entity, Function(x) x.Update())
' Data Bindings
idEditor.DataBindings.Add(New Binding("EditValue", entityBindingSource, "ID"))
textEditor.DataBindings.Add(New Binding("EditValue", entityBindingSource, "Text", True, DataSourceUpdateMode.OnPropertyChanged))

'ViewModel
Public Class ViewModel
'...
Public Overridable Property Entity() As Entity
'...
End Class

'Model
Public Class Entity
Public Sub New(ByVal id As Integer)
Me.ID = id
Me.Text = "Entity " & id.ToString()
End Sub
Private privateID As Integer
Public Property ID() As Integer
Get
Return privateID
End Get
Private Set(ByVal value As Integer)
privateID = value
End Set
End Property
Public Property Text() As String
End Class

您也可以使用SetBinding方法。

C#:

fluent.SetBinding(idEditor, l => l.EditValue, x => x.Entity.ID);
fluent.SetBinding(textEditor, l => l.EditValue, x => x.Entity.Text);

VB.NET:

fluent.SetBinding(idEditor, Function(te) te.EditValue, Function(dl) dl.Entity.ID)
fluent.SetBinding(textEditor, Function(te) te.EditValue, Function(dl) dl.Entity.Text)

但在這種情況下,就失去了設置必需的DataSourceUpdateMode的選項,該選項允許您防止過多的更新通知。

屬性依賴性

屬性依賴關系是來自同一ViewModel的兩個屬性之間的關系,當一個屬性改變時則另一個屬性會更新它的值。

在MVVM Best Practices演示中,多個模塊演示了以下設置:

  1. 將兩個 TextEdit 控件綁定到 ViewModel “Operand1”和“Operand 2”屬性。
  2. 當用戶更改 TextEdit 值時,操作數屬性會刷新其值。
  3. 當操作數屬性更改時,它們會更新數字“結果”屬性(依賴項#1)。
  4. “Result”屬性更新字符串“ResultText”屬性(依賴項#2)。
屬性

對于使用示例UI的每個演示模塊,將視圖元素綁定到ViewModel屬性的代碼都是相同的。

C#:

mvvmContext.ViewModelType = typeof(MultViewModel);
var fluentAPI = mvvmContext.OfType<MultViewModel>();
fluentAPI.SetBinding(editor1, e => e.EditValue, x => x.Operand1);
fluentAPI.SetBinding(editor2, e => e.EditValue, x => x.Operand2);
fluentAPI.SetBinding(resultLabel, l => l.Text, x => x.ResultText);

VB.NET:

mvvmContext.ViewModelType = GetType(MultViewModel)
Dim fluentAPI = mvvmContext.OfType(Of MultViewModel)()
fluentAPI.SetBinding(editor1, Sub(e) e.EditValue, Sub(x) x.Operand1)
fluentAPI.SetBinding(editor2, Sub(e) e.EditValue, Sub(x) x.Operand2)
fluentAPI.SetBinding(resultLabel, Sub(l) l.Text, Sub(x) x.ResultText)

然而,每個模塊中的屬性依賴聲明都不同。

OnPropertyChanged方法

在 POCO ViewModel 中,您可以聲明OnXChanged其中 X 是屬性名稱的方法,當相關屬性的值發生變化時,框架會調用這些方法。

運行演示

C#:

public class MultViewModel {
public virtual int Operand1 { get; set; }
public virtual int Operand2 { get; set; }
public virtual int Result { get; set; }
public virtual string ResultText { get; set; }

protected void OnOperand1Changed() {
UpdateResult();
}
protected void OnOperand2Changed() {
UpdateResult();
}
protected void OnResultChanged() {
UpdateResultText();
}
void UpdateResult() {
Result = Operand1 * Operand2;
}
void UpdateResultText() {
ResultText = string.Format("The result is: {0:n0}", Result);
}
}

VB.NET:

Public Class MultViewModel
Public Overridable Property Operand1() As Integer
Public Overridable Property Operand2() As Integer
Public Overridable Property Result() As Integer
Public Overridable Property ResultText() As String

Protected Sub OnOperand1Changed()
UpdateResult()
End Sub
Protected Sub OnOperand2Changed()
UpdateResult()
End Sub
Protected Sub OnResultChanged()
UpdateResultText()
End Sub
Private Sub UpdateResult()
Result = Operand1 * Operand2
End Sub
Private Sub UpdateResultText()
ResultText = String.Format("The result is: {0:n0}", Result)
End Sub
End Class
自定義更新方法

如果您的更新方法未調用“On…Changed”,請使用該DevExpress.Mvvm.DataAnnotations.BindableProperty屬性告訴框架,當屬性值更改時應調用此方法。在下面的代碼示例中,DevExpress.Mvvm.POCO.RaisePropertyChanged是一個 DevExpress 擴展方法,它將更新通知發送到依賴屬性。

運行演示

C#:

public class SumViewModel {
[BindableProperty(OnPropertyChangedMethodName = "NotifyResultAndResultTextChanged")]
public virtual int Operand1 { get; set; }
[BindableProperty(OnPropertyChangedMethodName = "NotifyResultAndResultTextChanged")]
public virtual int Operand2 { get; set; }
public int Result {
get { return Operand1 + Operand2; }
}
public string ResultText {
get { return string.Format("The result is: {0:n0}", Result); }
}
protected void NotifyResultAndResultTextChanged() {
this.RaisePropertyChanged(x => x.Result);
this.RaisePropertyChanged(x => x.ResultText);
}
}

VB.NET:

Public Class SumViewModel
<BindableProperty(OnPropertyChangedMethodName := "NotifyResultAndResultTextChanged")>
Public Overridable Property Operand1() As Integer
<BindableProperty(OnPropertyChangedMethodName := "NotifyResultAndResultTextChanged")>
Public Overridable Property Operand2() As Integer
Public ReadOnly Property Result() As Integer
Get
Return Operand1 + Operand2
End Get
End Property
Public ReadOnly Property ResultText() As String
Get
Return String.Format("The result is: {0:n0}", Result)
End Get
End Property
Protected Sub NotifyResultAndResultTextChanged()
Me.RaisePropertyChanged(Function(x) x.Result)
Me.RaisePropertyChanged(Function(x) x.ResultText)
End Sub
End Class
屬性依賴

使用 attribute 標記依賴屬性DevExpress.Mvvm.DataAnnotations.DependsOnProperties,請注意與前面的示例不同,下面的代碼僅使用一個依賴項:“ResultText”依賴于兩個“Operand”屬性,您無法使用此屬性創建鏈接依賴項。

C#:

public class MultViewModelEx {
public virtual int Operand1 { get; set; }
public virtual int Operand2 { get; set; }

[DependsOnProperties("Operand1", "Operand2")]
public string ResultText {
get { return string.Format("The result is: {0:n0}", Operand1 * Operand2); }
}
}

VB.NET:

Public Class MultViewModelEx
Public Overridable Property Operand1() As Integer
Public Overridable Property Operand2() As Integer

<DependsOnProperties("Operand1", "Operand2")>
Public ReadOnly Property ResultText() As String
Get
Return String.Format("The result is: {0:n0}", Operand1 * Operand2)
End Get
End Property
End Class

元數據類

在此方法中,創建自定義更新方法并使用單獨的元數據類將屬性與這些方法鏈接起來。如果BindableProperty 屬性按名稱引用更新方法,則該OnPropertyChangedCall方法使用 lambda 表達式來檢索方法。當重命名自定義更新方法時,Metadata 類會顯示編譯錯誤。

C#:

//View Model code
[System.ComponentModel.DataAnnotations.MetadataType(typeof(Metadata))]
public class SumViewModel_MetaPOCO {
public virtual int Operand1 { get; set; }
public virtual int Operand2 { get; set; }
public virtual int Result { get; set; }
public string ResultText {
get { return string.Format("The result is: {0:n0}", Result); }
}
protected void NotifyResultAndResultTextChanged() {
Result = Operand1 + Operand2;
this.RaisePropertyChanged(x => x.Result);
this.RaisePropertyChanged(x => x.ResultText);
}
//Metadata class
public class Metadata : IMetadataProvider<SumViewModel_MetaPOCO> {
void IMetadataProvider<SumViewModel_MetaPOCO>.BuildMetadata(MetadataBuilder<SumViewModel_MetaPOCO> builder) {
builder.Property(x => x.Result)
.DoNotMakeBindable();
builder.Property(x => x.Operand1).
OnPropertyChangedCall(x => x.NotifyResultAndResultTextChanged());
builder.Property(x => x.Operand2).
OnPropertyChangedCall(x => x.NotifyResultAndResultTextChanged());
}
}
}

VB.NET:

<System.ComponentModel.DataAnnotations.MetadataType(GetType(Metadata))>
Public Class SumViewModel_MetaPOCO
Public Overridable Property Operand1() As Integer
Public Overridable Property Operand2() As Integer
Public Overridable Property Result() As Integer
Public ReadOnly Property ResultText() As String
Get
Return String.Format("The result is: {0:n0}", Result)
End Get
End Property
Protected Sub NotifyResultAndResultTextChanged()
Result = Operand1 + Operand2
Me.RaisePropertyChanged(Function(x) x.Result)
Me.RaisePropertyChanged(Function(x) x.ResultText)
End Sub
'Metadata class
Public Class Metadata
Implements IMetadataProvider(Of SumViewModel_MetaPOCO)

Private Sub IMetadataProviderGeneric_BuildMetadata(ByVal builder As MetadataBuilder(Of SumViewModel_MetaPOCO)) Implements IMetadataProvider(Of SumViewModel_MetaPOCO).BuildMetadata
builder.Property(Function(x) x.Result).DoNotMakeBindable()
builder.Property(Function(x) x.Operand1).OnPropertyChangedCall(Function(x) x.NotifyResultAndResultTextChanged())
builder.Property(Function(x) x.Operand2).OnPropertyChangedCall(Function(x) x.NotifyResultAndResultTextChanged())
End Sub
End Class
End Class

集合綁定

要使用數據源記錄填充多項目控件,請使用方法SetItemsSourceBinding。

C#:

var fluentApi = mvvmContext1.OfType<ViewModelClass>();
fluentApi.SetItemsSourceBinding(
Target
ItemSelector,
SourceSelector,
MatchExpression,
CreateExpression,
DisposeExpression,
ChangeExpression
);

VB.NET:

Dim fluentApi = mvvmContext1.OfType(Of ViewModelClass)()
fluentApi.SetItemsSourceBinding(Target ItemSelector, SourceSelector, MatchExpression, CreateExpression, DisposeExpression, ChangeExpression)

Target——需要填充的目標UI元素。

項目選擇器——一個表達式,用于檢索應該從數據源填充的UI元素的項目集合。

源選擇器——一個表達式,用于定位數據源,其項應用于填充目標。

匹配表達式——將數據源項與目標子項進行比較的表達式。當更改或刪除數據源記錄時,框架將運行此表達式來確定是否應該更新相應的Target集合項。

創建表達式——當出現新的數據源記錄時,用于創建新的Target集合項的表達式。

處理表達式——當Target集合項的相關數據源記錄被刪除時,該表達式將對其進行處理。

更改表達式——指定當匹配表達式得出的目標集合項與數據源記錄不同時,如何更新目標集合項。

MVVM最佳實踐演示中,下面的代碼用自定義Entity類的對象填充一個列表框,SetBinding方法將編輯器的SelectedItem屬性與檢索相應Entity對象的ViewModel SelectedEntity屬性綁定在一起。

C#:

//View code
mvvmContext.ViewModelType = typeof(ViewModel);
var fluentApi = mvvmContext.OfType<ViewModel>();
fluentApi.SetItemsSourceBinding(
listBox,
lb => lb.Items,
x => x.Entities,
(item, entity) => object.Equals(item.Value, entity),
entity => new ImageListBoxItem(entity),
null,
(item, entity) => {
((ImageListBoxItem)item).Description = entity.Text;
}
);
fluentApi.SetBinding(listBox, lb => lb.SelectedValue, x => x.SelectedEntity);

//ViewModel code
public class ViewModel {
public virtual Entity SelectedEntity { get; set; }
public virtual ObservableCollection<Entity> Entities { get; set;}
protected void OnSelectedEntityChanged() {
//"Remove" is a custom ViewModel method that deletes a selected entity
this.RaiseCanExecuteChanged(x => x.Remove());
}
protected void OnEntitiesChanged() {
SelectedEntity = Entities.FirstOrDefault();
}
}

//Model code
public class Entity {
public Entity(int id) {
this.ID = id;
this.Text = "Entity " + id.ToString();
}
public int ID { get; private set; }
public string Text { get; set; }
}

VB.NET:

'View code
mvvmContext.ViewModelType = GetType(ViewModel)
Dim fluentApi = mvvmContext.OfType(Of ViewModel)()
fluentApi.SetItemsSourceBinding(
listBox,
Function(lb) lb.Items,
Function(x) x.Entities,
Function(item, entity) Object.Equals(item.Value, entity),
Function(entity) New ImageListBoxItem(entity),
Nothing,
Function(item, entity) CType(item, ImageListBoxItem).Description = entity.Text
)
fluentApi.SetBinding(listBox, Function(lb) lb.SelectedValue, Function(x) x.SelectedEntity)

'ViewModel code
Public Class ViewModel
Public Overridable Property SelectedEntity() As Entity
Public Overridable Property Entities() As ObservableCollection(Of Entity)
Protected Sub OnSelectedEntityChanged()
'"Remove" is a custom ViewModel method that deletes a selected entity
Me.RaiseCanExecuteChanged(Function(x) x.Remove())
End Sub
Protected Sub OnEntitiesChanged()
SelectedEntity = Entities.FirstOrDefault()
End Sub
End Class

'Model code
Public Class Entity
Public Sub New(ByVal id As Integer)
Me.ID = id
Me.Text = "Entity " & id.ToString()
End Sub
Private privateID As Integer
Public Property ID() As Integer
Get
Return privateID
End Get
Private Set(ByVal value As Integer)
privateID = value
End Set
End Property
Public Property Text() As String
End Class

觸發器

觸發器允許您在 ViewModel 屬性更改時修改 UI(視圖)。在DevExpress 演示中,一個復選框綁定到 ViewModel“IsActive”屬性,當此屬性的值更改時,觸發器會更改 UI 元素(標簽)的背景顏色。

C#:

//ViewModel code
public class ViewModel {
public virtual bool IsActive { get; set; }
}

//ViewModel code
var fluent = mvvmContext.OfType<ViewModel>();
fluent.SetBinding(checkEdit, c => c.Checked, x => x.IsActive);
fluent.SetTrigger(x => x.IsActive, (active) => {
if(active)
label.Appearance.BackColor = Color.LightPink;
else
label.Appearance.BackColor = Color.Empty;
});

VB.NET:

'ViewModel code
Public Class ViewModel
Public Overridable Property IsActive() As Boolean
End Class

'ViewModel code
Private fluent = mvvmContext.OfType(Of ViewModel)()
fluent.SetBinding(checkEdit, Function(c) c.Checked, Function(x) x.IsActive)
fluent.SetTrigger(Function(x) x.IsActive, Sub(active)
If active Then
label.Appearance.BackColor = Color.LightPink
Else
label.Appearance.BackColor = Color.Empty
End If
End Sub)
掃碼咨詢


添加微信 立即咨詢

電話咨詢

客服熱線
023-68661681

TOP
利記足球官網(官方)網站/網頁版登錄入口/手機版登錄入口-最新版(已更新) 真人boyu·博魚滾球網(官方)網站/網頁版登錄入口/手機版登錄入口-最新版(已更新) 最大網上PM娛樂城盤口(官方)網站/網頁版登錄入口/手機版登錄入口-最新版(已更新) 正規雷火競技官方買球(官方)網站/網頁版登錄入口/手機版登錄入口-最新版(已更新) 雷火競技權威十大網(官方)網站/網頁版登錄入口/手機版登錄入口-最新版(已更新) boyu·博魚信譽足球官網(官方)網站/網頁版登錄入口/手機版登錄入口-最新版(已更新) 權威188BET足球網(官方)網站/網頁版登錄入口/手機版登錄入口-最新版(已更新) 正規188BET足球大全(官方)網站/網頁版登錄入口/手機版登錄入口-最新版(已更新) a级国产片 | 免费高清视频免费观看 | 91中文字| 日韩精品中文乱码在线观看 | 啊日本一区二 | 精品欧美一区二区三区精品久 | 天天综合亚洲 | 97色伦欧美日韩视频 | 非洲一级婬片免费放天天 | 欧美亚洲欧美日韩中文二区 | h肉视频在线观看 | 成人理论电影在线 | 国产一品二品精品在线 | 午夜一区一品日本 | 精品国产高清自在 | 精品人成视频免费国产 | 亚洲综合色一区二区三区 | 中文字幕不卡在线观看 | 国产精品一区亚洲一区天堂 | 国产中文字幕在 | 欧美综合国产精品日韩一 | 精品偷自拍另 | 男同桌上课时狂揉我下面污文 | 成人国产精品秘果冻传媒在线 | 日韩精品一区二区三区观看 | h片在线观看资源网站 | 自拍偷拍欧美图片 | 丰满的闺蜜2中文字幕 | 成片在线看一区二区草莓 | 欧美极品另类ⅴideosde | 欧美精品一区二区三区 | 国产综合一区二区三区 | 免费看成人国产一区二区 | 黄页网站在 | 欧美一区二区三区性 | 国产精品h片在 | 国产精品主播在线 | 日韩精品成人亚洲专区在线电影 | 中文字幕日韩有码 | 国产精品线在线精品国语 | 国产农村妇女特 | 亚洲精品一区二区三区四区高清 | 日本九九热在线观看官网 | 成年免费视频 | 国产拍拍亚洲精品 | 亚洲人成中文字幕在线观看 | 国产精品不卡aⅴ在线播放 国产精品亚洲给色区 | 日本一道| 日韩在线免费播放 | 区国产二区 | 国产尤物在线视精品在亚洲 | 国产午夜不卡片免费视 | 亚洲自拍色综合图第一页区 | 日韩免费的视频在线观看香蕉 | 国产高清日韩一区二区四季 | 亚洲日韩国产成网在线观看 | 国产免费高清在线精品一区 | 欧美日韩国产一区 | 国产超级乱婬视频免费 | 欧美午夜理伦三 | 欧美色综合精品视 | 国产小嫩货视频在线观看 | 日韩欧美精品在线 | 欧美色欧洲免费无线码 | 国产欧美日韩综合精品二区 | 国产片a国产片免费看视频 尤物网红麻酥酥 | 国产精品一区二区含羞草 | a欧美日韩国产不卡免费 | 中日韩精品视频 | 美女aⅴ高清电影在线观看 任你躁在线精 | 日本中文字幕一区 | 日本三级全黄 | 护士精品一区二区三区 | 国产综合在线观看自拍 | 伊人热热精品中文字幕 | 天堂草原影院电视剧 | 国产亚洲精品精品国产亚洲综合 | 亚洲2025国 | 国产愉拍91九色国产 | 日产乱码一二三区别免费演员表 | 精品在线国产一区二区三区 | 日本免费人成视频播放 | 欧美人与物v | 日韩电影免费在线观看 | 欧美日本一区激情视频 | 欧美日韩国产精品自在线亚洲精品 | 91免费版视频在线观 | 国产+日韩+另类+视频一区爱 | 日韩在线永久免费播放 | 福利日韩精品中文字幕专区 | 男女爽爽午夜18 | 国产jlzzjlzz视 | 国产制服丝袜观看 | 国产色爽女人的视频。 | 国产欧美精品一区二区色综合 | 日韩伦理一区二区三区 | 日韩在线一区二区不卡视频 | 久操视频中文字幕在线观看 | 国产伦精品一区二区 | 片午夜在线观看 | 在线免费视频一区二区 | 国产一区二区三区在线精品专区 | 在线观看国产一区二区三区 | 国产精品亚洲一区在线播放 | 97午夜理论电影影院 | 成年人电影在线播 | 国产永久免费高清视频 | 亚洲日本欧美日韩中文字幕 | 亚洲一区二区三区乱 | 男人亚洲天堂日日夜夜 | 国产护士玉足脚交在线播放 | 男人的天堂v在线播放 | 国自产拍91| 国产亚洲一卡2卡3卡四卡网站 | 欧美处破视频免费观看 | 日韩在线观看精品第一页 | 大陆老熟女洗澡性视频tube | 色男人在线电影视频网站 | 亚洲中文字幕第一页在线 | 欧美精品系 | 国产视频91尤物在线观看 | 欧美日韩视频在线 | 黑人巨大精品欧美一区二区免费 | 亚洲精品制服丝袜一区 | 依人成人 | 国产精品免费αv视频 | 国产一级a毛一级a看免费 | 国产丝袜视频一区二区三区 | 日韩欧美中文字幕免费 | 区不卡免费观看 | 日韩精品亚洲aⅴ在线影院 欧美性受xxxx狂喷水 | 欧美日韩精品综 | 久1精品视频| 欧美极品一区 | 欧美丝袜自拍制服另类 | 精品国产一区二区三区香 | wwwらだ天堂中文在线 | 精品午夜在线视频观看 | 91精品全国免费观看老司机 | 天美麻花果冻苏蜜清歌 | 午夜福利1000集在线观看 | 国产日韩欧美一区二区三区精品 | 亚洲无亚洲人成网站77777 | 欧美日韩大片在线观看 | 顶级欧美妇高清xxxxx | 欧美亚日韩一二三四 | 色五月播五月开心五月激 | 国产真实强奷网站在线播放 | 日韩精品中文乱码在线观看 | 偷拍激情五月天 | 欧美午夜福利第一区 | 亚洲aⅴ一区二区三区四区 日本三级私人电影网 | 国产精品网友自拍 | 88影视 | 国产日韩欧美不卡在线二区 | 国产乱码精品在线播放 | 国产精品资源网站视频 | 亚洲一区二区三区香蕉 | 亚洲国产综合在线观看不卡 | 亚洲jizz| 91精品丝袜国产在线一区 | 姑娘色综合一二三区 | 亚洲视频在线观看精品 | 亚洲人成网 | 欧美曰韩一区二区三区 | 国产亚洲综合aa系列 | 日韩精品免费在线观看 | 福利体验区120秒免费观看 | 日韩成人免费精品视频 | 日韩一级大片亚洲 | 被同桌扒开腿用震蛋器折磨 | 丝袜制服诱惑第一页一区 | 日韩欧美精品一级特黄大片 | 伊人影视网 | 小小水蜜桃高清电视剧观看 | 欧美日韩成人午夜电影 | 韩国三级伦在线观看久 | 精品日本亚洲专区 | 国产又粗又猛又黄又爽 | 一本之道高清乱 | 国产精品一品道加勒比 | 亚洲日本va在线视频观看 | 国产精品素 | 国产夫妇精品自在线 | 热播电视剧电影高清免费在线观看 | 国产精品福利区一区二区三区四 | 日韩精品一区二区三区影院 | 国产特级 | 日本乱理伦片在线观看中文 | 欧美极品一区 | 午夜看片a福利 | 国产线播放免费人成视频播放 | 日韩欧美在线不卡 | 蜜桃网址| 精品黑人一区二区三区 | 国产精品一区二区国产主播 | 日韩私人综合影院 | 自偷自拍三级全三级视频 | 成人免费黄 | 精品一区二区视频免费看 | 精品成人18成人免费视频 | 在线观看亚洲h视频 | 国产黄在线播放免费观看 | 国产欧洲精品自在自线官方 | 日本免费一区二区三区中文字幕 | 朋友的妈妈在线观看 | 欧美另类国产精品一区二区在线 | 国产精品爽爽va在线观看 | 国产一区二区三区在线综合视频 | 欧美性爱影音九一 | 暴雨入室侵犯进出肉体免费观看 | 亚洲欧美日韩精品自拍 | 国产精品熟女一区二区不 | 亚洲色偷偷偷综合网另类小说 | 国产精品不卡免费视频 | 亚洲a级情欲片在线观看 | 最新在线精品国自产拍网站 | 91se在线看片国产免费观看 | 中文在线а | 免费夜色污私人影 | 精品就在欧美精品一 | 免费大mm视频在线观看 | 国产精品视频每日更新播放 | 欧美曰韩一区二区三区 | 日韩性爱在线观看 | 国产自约视频 | 日韩女人**片在线播放 | 三上亚悠在线精品二区 | 午夜成人影院在线观看不卡 | 国产精品午夜未成人免费观看 | 国产一级一片免费播放放a 亚洲a∨ | 日本中文字幕aⅴ高清看片 情趣五月天 | 国产日韩欧美顶级片 | 欧洲精品欧美精品 | 99re66热这里只有精 | 欧美日韩制服诱惑在线观看 | 国产精品hd免费观看 | 国产免费激情网站 | 超高颜值国产啪 | 国产a∨国片精品青草视频 韩国精品一区二区三区在线 | 亚洲欧美中文高清在线 | 九一国产一区二区在线观看 | 精品一区二区三区四区在线观 | 欧美激情免费 | 99热这里只有精品国产4 | 精品福利资源在线观看 | 欧洲精品码一区二区三区 | 国产精品喷潮在线观看 | 欧美精品一区二区三区中文 | 亚洲精品网址在线观看 | 九九热99久 | 国产乱妇乱子在线播放视频 | 精品日韩嗷嗷视频在线观看 | 99久热国产精品视频尤物 | 欧美亚洲日韩国产综合网 | 老熟女乱一区二区三区视频 | 69午夜国产精品 | 国产欧美日韩综合自拍 | 国产亚洲欧美日韩在线看片 | 国产欧美一区二区三区不 | 99热这| 国产做爰xxx | 国产午夜福利在线播放87 | 欧美一区二区三区 | 欧亚精品卡一卡二卡三 | 九九视频在线观看6 | 国产精品香蕉夜间视频免费播放 | 中文字幕亚洲欧美日韩专区 | 在线日本一区二区免费观看 | 中文字幕视频区 | 本一区二区三区 | 一级理论片免费观看在线 | 亚洲高清中文字幕一区二区三区 | 精品日韩产品 | 国产欧美一成人不卡视频 | 国产日韩欧美激情在线 | 国产精品香港三级国产 | 福利91 | 午夜成人爽爽爽视频在线观看 | 国产欧美日韩精品福利98 | 中文字幕无线免费 | 日韩免费播放一区二区 | 三级在线国产 | 国产欧美日产中文一区 | 日韩精品一区二区三区在线视频放 | 欧亚天堂在线播放 | 99re热视频这里只有精 | 女人毛多水多的视频 | 成人欧美一区二区三区白人 | 午夜激成人免费视频在线观看 | 太粗太硬小寡妇受不了 | 国产精品婷婷午夜 | 国产激情自拍亚洲精品国产精品精 | gogogo免费观看视频高清 | 欧美首页 | 天天综合7799精品影视 | 成人播放日韩在线观看 | 国产欧洲在线播放 | 日韩午夜理论片中文字幕 | 欧美区一区二区三区在线视频 | 欧美亚洲国产另类制服丝袜 | 国产人妖ts视频在线观看 | 精品一区二区三区视频日产 | 国产在线高清精品三区 | 99视频观看一区 | 国产精品综合 | 国产日韩在线视 | 日韩欧美亚洲一区二区在线观看 | 国产精品乱码一二三区 | 乱码视频午夜在线观看 | 羞羞视频免费看网站 | 欧美日韩精品一区二区三区 | 91po国| 日韩一级欧美动漫国产在线观看 | 国产久re热视频精品 | 日本三级韩国三级三级a级按 | 亚洲一区二区三区四区在线 | 91社区免费福利区 | 免费人成在线视频无 | 亚洲午夜| 亚洲v女人的天堂在线观看 无人影院手机版在线观看免费 | 亚洲欧美在线观看片不卡 | 亚洲欧美综合中文 | 国产suv精品一区二区69 | 亚洲精品一区二区观看 | 福利影院 | 最新亚洲人成网站在线观看 | 国产自产一二三区 | 欧美乱妇日本 | 99re在线精品 | 黑人中文字幕在线 | 99久免费精品视频在线观看 | 国产微拍精品一 | 床震吃胸膜奶免费视频 | 国产亚洲精品福利片 | 国产激情一区二区三区在线hd | 18出禁止看的啪视频网站 | 欧美亚洲精品午夜理论片 | 牛牛精品一区二区三区 | 最新91天堂国产电影在线观看 | 国产色秀精品综合 | ww成在线人免1688费欧美 | 欧美日韩精品一二三区在线视频 | 久青草国产在线视频www | 精品国产亚一区二区三区 | 国产一区在线视频 | 亚洲东京 | 亚洲激情图片 | 成人午夜影院网站 | 亚洲熟女www一区二区三区 | 国产精品高清尿小 | 欧美日韩精品在线 | 免费b站在线观看人数在哪儿找 | 亚洲午夜私人影院 | 欧美自拍偷 | 国产在香蕉播放 | 日本大胆欧美人术艺术 | 国产精品1234 | 日韩在线电影大全免费观看 | 国产日韩制服丝袜在线第一页 | 国产日韩一区二区三区高清 | 国产亚洲中文日韩欧美 | 乱中年女人伦中 | 免费一级欧美片在线观看欧美 | 香港日本三级在线播放 | 日韩欧美一级精品 | 亚洲mv大片欧洲mv大片入口 | 日韩在线一区二区视频中文字幕 | 午夜福利在线观看亚洲一区二区 | 精品在线观看三级国产 | 99精品偷拍视频一区二区三区 | 天天看片高清观看免费国产 | 日韩精品亚洲精品第一页 | 欧美亚洲日本 | 日本高清一区二区三区不卡免 | 日韩一区二区在线观看视 | 亚洲精品免播放器在线观看 | 韩国理论大全 | 国产欧美丝袜在线二区 | 欧美中文日韩v在线观看q | 日本乱理伦片在线观看中文字幕 | 欧美αv国产αv亚洲αv | 自拍偷自拍亚洲精品10p | 狠日狠干日曰射 | 韩国三级香港三级日本三级la | 在线视频一区二区三区不卡 | 国产精品综合一区二区 | 欧美第27页网站在线观看 | 国产伦子伦对白视频 | 亚洲天堂激情在线看 | 中韩三级在线观看 | 制服丝袜中文字 | 91精品国产一区二区三区香蕉 | 精品玖玖玖视 | 老少配videoshd乱配 | 欧美精品一区二区三区不卡网 | 吉吉影音先锋 | 99久视频只有精品2025 | 免费b站在线观看人数在哪儿找 | 免费观看网站 | 国产二区丝袜在线观看 | 日本高清在线视频观看 | 日本三级a∨在 | 国产亚洲精品导航 | 精品国产免费人成在线观看 | 欧美日韩亚洲高清精品 | 日本aⅴ | 欧美另类制服丝袜国产 | 三级国产国语三级在线 | 麻花传剧原创mv在线观看 | 日本黄大片在线观看 | 狂野欧美性猛xxxx乱大交 | 日本一区二区三 | 一级a看片免费视频 | 国产精品1000部在线观看 | 91福利电影 | 免费在线观看的网站 | 国产精品成熟老女人视频 | 成年人在线免费观看 | 亚洲欧美曝精品手机观看 | 中文字幕一区二区三区不卡 | 天天看片国产精品 | 国产日产亚洲系列最新 | 欧美日韩人人精品影视 | 日本高清www在线观看视频 | 欧美日韩视频在线一区二区 | 国产美腿制服丝袜在线 | 国产日韩欧美激情视频不卡 | 日韩午夜看片成人精品 | 老司机午夜性大片免费 | 男女做爰猛烈吃 | 日韩精品一区二区三区免费看 | 真正国产人妖ts系列 | 国产又黄又粗又硬又爽视频 | 亚洲中文精品视频在线 | 99相伴健康一生 | 日本高清视频网址 | 国产成综合 | 一区二区三区在线观看 | 国产精品亚洲精品一区二区三区 | 日韩电影在线电影 | 欧美淫秽一区二区 | 久热国产在线一区二区v | 亚洲视频网址 | 欧洲亚洲欧美国产日本高清 | 日本午夜www高清视频 | 国产高清在线a视频 | 精产国品一二三产区m553 | 免费看的国产区网站 | 国产伦国 | 国产在线欧美日韩精品一区二 | 国产亚洲成aⅴ人片在线奶水 | 欧美床戏吻戏摸下面吻胸 | 好看中文 | 日韩一区二区三区在线精 | 国产亚洲精品资源在 | 国产一区三区二区中文在线 | 国精产品一 | 精品亚洲欧美v国产一 | 国内精品美女a在线播放 | 精品一区二区三 | 精品成人免费国产 | 成人性生交大片在线观看 | 娇小teen乱子 | 国产一级婬片aa免费观看 | 巨大乳女人做爰视频在线看 | 国产午夜福利在线看 | 国产舌乚八伦偷品w中 | 欧洲精品亚洲精品日韩专区 | 欧美大胆 | 91精品国产乱码在线观看入 | 日韩在线视频不卡一区二区三区 | 国产精品露脸国 | 一二三四在线观看免费中文吗中文 | 欧美精品国产日韩综合在 | 欧美变态另类刺激 | 亚洲欧美中文字幕在线播放 | 成人国产在线视频 | 国产精品揄拍100视频 | 欧美日韩高清一区二区在线 | 午夜网站在 | 亚洲s色大 | 99热在线免费| 亚洲成a人片在线观看日本 免费一级中文 | 亚洲成熟女人毛毛耸耸多 | 国产高清不 | 综合欧美乱伦高清 | 国产精品视频在线观看 | 56prom精品视频在放免费 | 日本在线一区二 | 国产第一视频在线直播 | 韩国日本亚洲欧洲一区二区三区 | 国产制服丝袜一区二区三区 | 国产高清成免费视频 | 一区二区三区不卡 | 国产精品日韩欧美在线第3页 | 免费公开在线视频 | 欧美高清在线精品一 | 中韩欧美视频一区 | 亚州欧美自拍另类欧美 | 亚洲欧美洲成人一区二区 | 国产一区二区三区猎奇视频 | 亚洲欧美综合中文 | 自偷自拍三级全三级视频 | 51xx影视午夜福利 | 国产日韩一 | 国偷自产在线观看 | 国产一区视频在线免费观看 | 亚洲欧美视频一区二区三区 | 亚洲色精品vr一区二区三区 | 91香蕉网站在线 | 精品网站在线观看影片 | 国产另类ts人妖一区二区 | 精品精品 | 星辰影视大全免费版官网 | 午夜私人影院免费体验区 | 国内国外精品一区二区 | 美女国产在线观看免费观看 | 国产极品乱码在线观看 | 两性色午夜视频免费老司机 | 99热99re8国产在线播放 | 日本理论片和搜子同居的日子电 | 日韩精品中文字幕视频在 | 色色色色色色欧美日韩 | 99香蕉国产精品偷在线观看 | 日韩欧美国产中文一区 | 91国内揄拍 | 国产精选在线视频 | 国产手机自拍视频 | 欧美性xxxxx| 欧美三级大片在 | 日本免费一区二 | 亚洲成亚洲成网 | 又黄又免费的视 | 又硬又粗又大一区二区三区视频 | 国产精品片在线 | 国产欧美日韩综合一区在线 | 动漫精品无| 免费观看又黄又硬又爽的视频 | 国语自产偷拍精品视频偷最新 | 欧洲一卡2卡三卡四卡高清 国产舌乚八伦偷 | 老司机导航 | 最近更新在线中文字幕 | a国产乱理伦片在线观看夜 欧美日韩一二三四区 | 女人被黑人巨大进入 | 欧美va亚洲 | 国产精品自在线拍国产下载 | 国产国语对白露脸 | 日韩美女欧美精品 | 激情欧美一区二区三区 | 久在线精品视频线观看 | 1区2区日韩欧美国产 | 91天仙tv国产福利精品 | 中文字幕日韩一区二区三区不卡 | 成人性生交大片免费看中文 | 日韩乱码精品中文字幕不卡 | 一级特黄性色生活片一区二区 | 欧美三级成版人版在线观看 | 精品国产福利一区二区在线 | 午夜福利精品 | 国产精品美女一区二区三区 | 国产欧美精品日韩 | 国产精品自在自线亚洲 | 老司机精品成免费视频 | 亚洲情综 | 亚洲天堂偷拍日韩中文字 | 免费国语 | 国产在线播放不 | 天天看片无 | 影视先锋资源免费在线观看 | 国产费视频在线观看 | 国产精鲁鲁网在线视频 | 国产亚洲欧美变态精品 | 国产亚洲精品福利片 | 日韩欧美一区二区大胸视频 | 日本午夜福利日韩 | 欧美精品第1页www劲爆 | 国产91精品对自露脸全集观看 | 日韩欧美高清一区 | 亚洲日本va在线视频观看 | 国产在线 | 国产短裙高 | 91不卡在线 | 日韩大乳视频中文字幕 | 欧美日韩中文字幕第一页 | 日本伊人精品一区二区三区 | 中文在线资源官网在线 | 国产日本欧美在线一区二区 | 大陆精大陆国产国语精品 | 国产精品自产拍在线观看55 | 精品日韩一区 | 日韩精品另类天天更新影院 | 国产午夜亚洲精品不卡在线观看 | 国产人妖综合在线视频 | 欧美性xx| 日韩在线精品一区 | 国产xx| 国产微拍精品一区大全 | 911亚洲精品国内自产 | 国产欧美亚洲精品综合在线 | 精品玖玖玖视频在线观看 | 亚洲国产中文字幕无线乱码 | 国产乱弄视频在线观看 | 中文日产乱幕九区无线码 | 老女人牲| 中文字幕日韩精品一区二区三区 | 国产迷姦播 | 两个人看的www视频免费完整版 | 最近中文字幕2025 | 亚洲人成网站在线观看 | 国产99爱| 性欧美一级 | 国产极品网站在线观看 | 日本高清激情乱一区二区三区 | 国偷自产视频一区二区久 | 6080欧美一区二区三区四区 | 日本免费一区日本一大免费高 | 欧美日韩在线国产 | 国产乱对白刺激视频 | 亚洲囯产一区二区三区 | 国产亚洲精品资源在 | 欧美另类一区二区在线观看 | 国产欧美综合在线观看 | 日韩综合一区二区三区 | aⅴ日本亚洲欧洲免费 | 精品国产乱子伦一区二区三区r | 91高清免费国产自产拍不卡 | 欧美高清午夜视频 | 最新电影电视剧免费在线观看 | 91影视永久福利免费观 | 欧美亚洲日韩动漫偷自拍页 | 欧美aⅴ菲菲影视城视频 | 日本无遮羞免费的动漫网 | 日本中文在| 神马电影院午夜神福利在线观看 | 成人福利国产视频 | 亚洲日本国产乱码va在线观看 | 私人影院 | 国产日韩视频在线观看 | 日韩一级在线观看 | 一本到加勒比东 | 亚洲欧美一区二区不卡 | 国产精品亚洲欧美大片在线看 | 国产日韩欧美在线一区 | 欧美人与性另类 | 在线观看国产h视频 | 国产片一区二区 | 欧美一级黄 | 91免费精品国偷自产在线在线 | 婷婷综合亚洲 | xyx性爽欧美观看 | 国产一区二区三区在线观看视频 | 亚洲aⅴ天堂 | 国产影视亚洲精品手机版 | 欧美高清一区二区 | 伦理片mp4 | 精品一区字幕二区 | 国产黄a三级三级三级 | 亚洲精品在线观看视频 | xxx波多野 | 欧美男同 | 国产毛a | 狠狠狠狼鲁欧美综合网免费 | 精品日韩国产欧美 | 96精品 | 欧美黑人巨大xxxxx | 亚洲日韩天堂在线 | 成人国产一区二区 | 日韩熟女精品影院 | 小明加密通道最新三 | 欧美一级成人免费大片 | 日本永久免费aⅴ在线观看 亚洲制服丝袜中文字幕自拍 | 国产男女猛视频在线观看 | 国产精品13页 | 日韩欧美中文亚洲高清在线 | 亚洲一区二区高清 | 亚洲成熟女人毛毛耸耸多 | 国产伦理一区的二区三区四区 | 国产激情大 | 国产精品中文 | 国产欧美午夜视频 | 日产无线码一区 | 亚洲中文在线不卡 | 99精品热爱在| 欧美a级大胆视频 | 国产亚洲aaa在线观看 | 国语成人自产拍在线观看 | 日韩视频在线观看网站资源 | 亚洲色偷偷综合亚洲v | 国产帅男男gay网站视频 | 日本理论片在线观看片免费 | 99热只有精品在线观看 | 亚洲狼人天堂 | 国产精品v日韩精品v欧美精品 | 懂色中文一区二区三区在线视频 | 亚洲aⅴ乱码一区二区波多野 | 日本乱码视频中文字幕亚洲一区 | 影视最全更新最快 | 韩国三级香港三级日本三级la | 美女自卫慰出水免费视频 | 精品国产高清自在线一区二区 | 啊日本一区二 | 欧美一级鲁丝 | 日本美女视频体验一二区 | 国产在线精品成人一区二 | 国产精品猎奇系列在线观看 | 精品国产免费一区二区三区香 | 成全在线观 | 国产又粗又猛又大爽又黄的视频 | 国产又爽又黄又爽又刺激 | 国产午夜福利免费看片 | 日韩在线二区全免费 | 人人狠人人透人人爱 | 日韩一卡二卡在线观看 | 成人年鲁鲁在线观 | 日韩逼穴美女区欧美 | 国产一级二级免费观看 | 717电影琪琪午夜理论 | 国产xxx内 | 4480yy午夜私人影院 | 97操人人草人人 | 国产精品又粗又大 | 日本精品视频在线观看 | 欧美猛交xxxx乱大交 | 国产日韩在线观看香蕉一区 | 伊人亚洲日韩欧美一区、二区 | 日本一区二区在 | 国产久9视频在线观看 | 男女做aj视频免费的网站 | 在线中文字幕亚洲 | 中文字幕精品亚洲无线码一区应 | 欧美乱妇日本无乱码特黄大 | 日本三级a∨在线观看 | 免费在线观看国内色片网站网址 | 国内一区二区三区在线观看 | 亚欧中文| 欧产日产国产精品精品mp4 | 蜜芽tv国产在 | 91茶楼| 卡一卡二卡三卡四 | 欧美专区中文字幕 | 日韩免费一区二区三区中文字幕 | 国产二区欧美视频在线观看 | 91精品丝袜网站 | 1000部禁止18 | 国产福利免费视频 | 国产va免费精品 | 激情视频小说在 | 国产午夜精华2025在线 | 看片天堂 | 三年片最新电影免费观看 | 国产吹潮在线观看中文 | 欧美日韩国产激情电影 | 日本精品国产一区二区在线 | 午夜三级中文在线观看 | 在线观看精品自拍视频 | 国产未成女年一区二区 | 欧美日韩乱伦视频图片 | 成人精品视频免费看 | 免费看aaaaa级少婬片日本 | 国产一区二区丝袜美腿在线 | 欧美日韩一区二区三区视频在 | 成年人在线观看 | 精品国产一区二区三区高清观看 | 国产一区二区三区四区五区加勒比 | 欧美精品中文字幕亚洲专区 | 国产精品香蕉在线一区二区 | 免费观看一级特黄欧 | 成人高清在线观看播放 | 欧美性a视频 | 真人做爰片免费 | 国产老妇伦国产熟女中文视频 | 国产更衣室视频在线观看 | 不卡一区二区三区免费视频 | 国产精品三三级在线 | 国产在线91精品入口 | 女性一级全黄生活片在线播放 | 日本亚洲国产一区二区三区 | 日韩在线一区二区三区免费视频 | 亚洲日韩欧美天堂 | 日本xxxx18野外无 | 99亚洲精品高清一二区 | 国产91精品高清一区二区三区 | 欧美国产日本韩在线 | 欧美a级毛欧 | 户外露出在线 | 国产91精品一区二区 | 国产综合成人观看在线 | 欧美精品成人三级在线观看 | 免费激情网站国 | 奇米精品视频一区二区三区 | 91精品啪aⅴ在线观看国产 | 日韩亚洲人成在线综合日本 | 硬又粗视频 | 国产欧美日韩电影在线观看 | 成年男女视频网站 | 手机播放 | 欧美日韩在线观看 | 日本成a人片在线播放 |