超碰91资源站-超碰97豆花-超碰97人妻-超碰97人人干-超碰97人人香蕉-超碰97天天操-超碰97在线资源站-超碰97资源站共享-超碰97资源站总站-超碰aa在线91-超碰av操-超碰爱爱

半岛外围网上直营

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足球大全(官方)網站/網頁版登錄入口/手機版登錄入口-最新版(已更新) 成人精品永久免费视频 | 东京热蜜桃一区二区 | 精品国产日韩欧美一级一区二区 | 91麻豆精品欧美视频 | 国产av无码专区亚洲av毛片费 | 18禁美女黄网站色大片在线 | av一区二区| 国产欧美日韩小视频高清 | 囯产精品一品二区三区 | 国产爆乳无码视频在线观看3 | 91无码人妻精品一区二区 | 国产最新精品自在自线亚洲 | 丰满少妇高潮惨叫久久久一 | 国产精品高潮呻吟久久av无码 | 国色天香第01集在线播放 | 成无码三级视频 | 国产精品欧美三级在线观看 | 国产高清无码黄片亚洲成人毛片 | 国产精品日韩欧美在线观看 | 2025国自产一点都不卡 | 囯产精品高清三级一区 | 国产精品啪啪一区 | 国产精品不卡无码av在线播 | 国产免费高清在线视频观看网 | 激情内射亚州一区二区三区爱妻 | 国产一区高清三级久色成人 | 国产av一区二区三区久久 | 激情欧美成人久久综合小说 | 国产一区二区在线日韩 | 国产精品高清无码在线观看 | 国产精品高清一区二区三区不卡 | 2025最新亚洲中文字幕在线 | 国产无套流白浆一区二区久久 | 国产国产久热这里只有精品 | 国产精品成人av | 99久久久国产精品 | 动漫黄网站免费永久在线观看 | 18白丝水手服自慰喷水网站 | 国产精品自产拍在线涩爱 | h无码精品动漫在线观看导航 | 精品国产一区二区三区国产馆杂枝 | 91大神在线精品网址 | 国产成人亚洲精品无码综合原创 | 国产成人aⅴ在线免费观看 国产成人aa精品一区在线播放 | 国产精品无码在线2025 | 国产精品成人av无码久久 | 2025最新久久久视精品爱 | 国产一区二区三区在线观看免费 | 国产午夜毛片成人网站 | 国产精品偷窥盗摄在线欧美 | 不卡福利视频一区二区三区 | av片免费在线观看不卡 | 岛国精品一区二 | 国产成人精品亚洲午夜麻豆 | 国产精品毛片在线 | 国产aⅴ精品一区 | 成人片黄网站a毛片免费 | 国产无码精品在 | 国产一区二区三区与无尽视频 | 国产日韩不卡精品区 | 99久久国产宗和精品1上映 | 国产一区二区三区无码 | 国产一区二区三区亚洲欧美 | 国产成人精品.一二 | 国产精品久久久久久久久久日本 | 国产成人综合欧美午夜不卡 | 国产成人啪精品视频免费a 国产成人啪精品视频免费软件 | a级毛片无码免费真 | 国产ts在线播放 | 精品无码一区二区三区爱欲 | 韩国国产精品一区二区三区 | 福利一区二区三区视频午夜观看 | 国产成人av大片大片在线 | 国产超级va在线观看视频 | 爆乳熟妇一区二区三区 | 国产成人午夜一区二区 | a级片在线播放 | h无码真人在线观看 | 国产亚洲综合色就色 | 国产女人喷浆抽搐高潮 | 2025国产精品自在拍在线播放 | 国产精品自产在线观看免费 | 国产寡妇偷人在线视频 | 国产无套高潮在线观看 | 国产精品成人一区二 | 精品无码一区二区三区不卡 | 国产av人人夜夜澡人人爽 | 后入清纯学生妹 | 99国产一区 | 成人无码h免费动漫在线观看 | 91视频黄色 | av无码精品久久不卡网站 | 国产不卡高清在线观看视频 | 国产成人综合久久亚洲精品 | 精品无码国产一区二区三区在线看 | 精品久久久久久无码中文野结衣 | 91精品国产91热久久久久 | 国产精品福利在线观看 | 国产91福利在线精品剧 | 国产av福利久久精品can | 国产成人a在线观看视频免费 | 91在线精品亚洲一区二区 | 国产女同女互慰流白浆视频 | 精品人妻无码av波多野结 | 精品少妇无遮挡毛片视频软件 | 国产绿帽在线视频看 | 国产毛片午夜无码专区喷水 | 国产午夜福利久久网 | 国产成人自拍视频在线 | 国产肥熟老 | 91久久国产 | 国产欧美日韩亚洲 | 国产成人亚洲精品乱码在线观看 | 国产精品无码一区二区在线观一 | 国产成人三级在线播放 | 黑人巨大精品欧美一区二区o | 寡妇高潮一级毛片免费看懂色 | 国产精品美女久久久久久久久 | 国产午夜无码喷水福 | 国产操女人 | 国产在线精品一区二区三区直 | 国产成人av福利在线播放 | 成在线人午夜剧场免费无码 | 国产成人免费高清在线观看 | 国产一级内射高清视频在线观看 | 精品国产无码大片在线看 | 国产成人中文在 | 囯产私伦一区二区三区 | av午夜精品一区 | 国产精品内射 | 国产白浆视频 | 国产一区二区三区免费在线视频 | 国产在线视频二区 | 精品国产美女在线一区二区三区 | 成人精品久久久久免费精品久 | 国产午夜一区二区三区 | 国产无码播放 | 97精品国产综合久久 | 国产精品成人亚洲一区二区 | 岛国三级在| 东京热欧美久久久 | 精品国产午夜福利在 | 国精品日韩欧美一区二区三区 | 国产片婬乱一级毛片丫丫 | 国产一卡二卡三卡 | 91精品国产网曝事件门 | 91久久人人妻人人澡人人爽 | 国内无码可以观看黄 | 国产偷窥女洗浴在线观看 | 国产性按摩视频在线观看 | 国产丝袜深夜福利院在线 | 国精品无码一区二区三 | 99久re热视频这只有精品6 | 国产高清乱理伦片中文 | 99国产婷婷综合在线视频 | 国产一区二区三区与无尽视频 | 国产三级久久久精品麻豆三级 | 国产日韩成人内 | 国产白浆一区二区三区 | 高潮喷水香蕉视 | 国产一区二区三区四区五区精品 | 97精品视频在线免费观看 | 国产www污涩视频网站 | 二区三区在 | 91在线精品亚洲一区二区 | 精品午夜视频一区二区三 | 国产精品在线亚洲手机视频 | 国产极品jk白丝喷白浆图片 | 国产爆乳美女 | 国产精品乱码一二三区的特点 | 国产一级片内射视频播放 | 18禁欧美猛交xxxxx无码 | 国产成人av三级在线观看 | 国产精品国语对白露脸在线播放 | 精品高清一区二区三区 | 国产欧美日韩综合精 | 国产精品免费不卡av | 精品国产伦一区二区三区在唱戏 | 91人妻人人做人碰 | 国产成a人片在线观看网站 国产成a人亚洲精ⅴ品无码性色 | 91无码人妻精品一区二区蜜桃 | 91人妻精品一区二区三区蜜桃 | 国产精品一区二区不卡的视频 | 国产午夜精品理论在线观看 | 精品无码视频在线观看专区 | 国内精品一区二区三区 | 国产三级在线观看不卡 | 国产黄色带三级在线观看 | 91久久夜色精品国产伊甸园 | 精品国产午夜免费看福利 | 精品一区二区三区三区 | 国产91小视频在线观看 | 国产私密视频在线 | 国产娇小粉嫩在线观看 | 国产传媒亚洲综合一区二区 | 精品国产亚洲一区二 | www中国黄色一级片 wwxx在线观看免费 | 国产精品毛片无码 | av无码专区亚洲avl在线观看 | 爆乳高潮喷水无码正在播放 | 精品国内自产拍在线观看 | 国产人妖网站大全免 | 国产日韩一区二区精品在线播放 | 国产3级在线高清手机在线播放 | 天天夜夜综合 | 国产无码av一区二区在线入口 | 国产萌白酱喷水视频在线观看 | 国产精品视频第二区第二页 | 国产精品边做奶水狂喷无码 | 国产福利小视频在线免费观看 | av一区二区三区人妻少妇 | 成人午夜黄网站在 | 国产高清精品在线中文字幕 | www亚洲天堂网站.con | 国产日韩av免费无码一区二区 | 91国自产精品中文字幕亚洲 | 囯产精品久久久久久av三级 | 国产精品毛片在线完整版的 | 国产精品一线二线三线四线毛片 | 国产午夜理论电影在线观看 | 国产成人精品怡红院在线观看 | 国产不卡高清视频在线观看 | 国产无码一区二区二区二区 | 国模无码一区二区三区在线观看 | 国产成人亚洲精品96 | 91成人网址 | 国产成人精品88综合久久久久 | 91老司机深夜福利精品视 | 国产美女av毛片 | 国产精品一区二区白浆 | 国产成人永久免费播放视频 | 911精品国产一区二区在线 | 国产精品免费在线播放 | 97人人超碰国产精品旧版 | 国产精品无码av不卡 | 国产高潮流白浆喷水免费网站 | 成人无码区免费aⅴ片在线观看 | 国产毛a片久久久久久无码 国产毛多水多高潮高清 | 精品国产一区av天美传媒 | 国产制服美女在线观看 | 国产精品丝袜高跟鞋 | 国产精品伊人久久免费视频 | 国产91精品一区二区麻豆亚洲 | 国产狂喷| 精品国产免费人成电影在线看 | 精品国产福利在线观看 | 国产精品嫩草久久久久奇趣体验 | 国产免费高清视频拍拍拍 | 成年永久一区二区三区免费视频 | 国产美女爽到尿喷出来视频 | 东京热久久综合久久 | a片在线观看跳转不卡 | 国产天天看天天爽一区二区 | av在线电影免 | 动漫精品专区一区二区三区不 | 国产精品欧 | 国产成人狂喷潮在线观看2345 | 果冻传媒天美传媒在线观看入口 | 国产成人精品实拍在线 | 国产剧情久久久性色 | 国产午夜精品不卡观看 | 成午夜精品一区二区三区 | 91在线国产专区精品 | 国产aⅴ一二三区无码视频 国产aⅴ一区 | 国产午夜羞羞小视频在线观 | 国产成人av电影在线观看第页 | 91在线亚洲 | 动漫中国麻豆av无码精品一区二区 | 国产精品午夜福利不卡 | 91po国产在线精品免费 | 国产亚洲成a人片在线观看 国产亚洲成v人片在线观黄桃 | 精品国产福利在线观看麻豆 | 国产高清japanese在线播放 | 国产精品无码高清在线 | 爆乳上司julia中文字幕 | 国产品精在线观看一区 | 国产精品午夜福利在线观看 | 国产欧美日韩a片免费软件 国产欧美日韩va另类 | 国产女人喷浆抽搐高潮 | 国产一区二区视频在线 | 国产精品成熟老女人视频 | 白浆一区二区在线观看 | 国产精品免费视频无码 | 国产精品成人69xxx免费视频 | 国产在线第一页在 | 成人午夜看片在线观看 | 国产欧美精品亚洲一区二区 | 99九九精品视频 | 国产毛片毛多水多密月 | 成人午夜性a一级毛片美女 成人午夜性a一级毛片免费 | 高清精品自在久久国产 | 国产亚洲视频在线观看激情 | 国产精品国产三级国产av麻豆 | 精品国产人成亚洲区 | 丰满白嫩人妻中出无码 | 国产国语对白在线高清视频 | 99国产精品99久久久久久 | 国产高清精品入口91 | 91成人爽a毛片一区二区动漫 | 丰满人妻熟妇乱偷人无码 | 丰满少妇一区二区 | 精品人妻无码中文久久免手 | 精品一级少妇久久久久久久 | 国产精品成人无码a片免费网址 | 国产亚洲日韩在线人成 | 高潮国产白浆抽搐福利日本 | 国产高清无码不卡二区三区 | hezyo加勒比久久爱综合 | 国产精品色婷婷亚洲综合看片 | 国产精品国内免费一区二区三区 | 国产白丝jk被疯狂输出视频 | 精品国免费一区二区三区 | 91麻豆国产在线观看 | 国产色婷婷在线精品一区 | 国产野战正规军全集在线观看 | 成人无码区免费aⅴ片黄瓜 成人无码区免费aⅴ片在线观看 | 国产av无码专区亚洲av毛片 | 国产无套护士在线观看 | 精品无码中文 | 国产99国产精偷 | 国内丰满少妇一a级毛片视频 | 国产成人免费a | 国产精品一区自拍 | 国产熟女精品一区二区 | 国产不卡视频在线 | 91大神精品全国在线观看 | 91精品国产制服啪啪无码 | 国产艳福片内射视频播放 | 国产精品日产欧美一区二区三区 | av有码中文字 | 成人无码区免费aⅴ片在线观看 | 国偷自产av一区二区三区接 | 国产二区三区午夜免费视频 | 国产成人手机高清在线观看 | 国产免费69成人精品视频 | 国产精品乱码久久久久久软件 | 国产中文字幕在线播放 | av区一区二 | 国产精品一级在线观看 | 成人做爰www免费看视频韩国 | 91九色老熟女免费 | av片区在线观看 | 国产日本精品一区二区 | 国产日韩无码影院一区二区三区 | 国产超级乱婬aⅴ片 | 国产午夜激无码色本v毛片 国产午夜精华2025在线 | 国产欧美va欧美va香蕉在线 | 精产国品一二三产品麻豆 | 国产一区二区精品在线观看 | 国产精品毛片一区 | 国产无码毛 | a级无码毛片真真久久真人版 | 国产精品午夜理论片 | 丰满老熟好大bbb | 国产91成人超清在线 | 国产在线主播观看不卡 | 99精品视频在线观看免费蜜桃 | 国产无码精品一二三四区 | 国产成人午夜福利免费无码r | 国产va免费视频一区二区三区 | 国产黄色视频在线 | 国产精品久线在线观看 | 国自产精品手机在线观看 | 2025久久国产免费 | 911国产在线观看无码专区 | 精品国产色欧洲激情 | 国产传媒一 | 国产午夜一区高清 | 国产区免费视频在线观看 | 91免费国产在线观看尤物 | 激情高潮大全套草草 | 国产一区二区三区欧美精品 | 成人午夜免费福利 | 91高潮一区二区三区高潮九色 | 成人亚洲国产精品无码久久一线 | 国产麻豆精品久久毛片 | 国产精品好吊一区二区三 | 国产一人人看在线视频 | 福利精品第一导航 | 国产成人免费影片在线观看 | av中文字幕不卡 | 精品日韩国产欧美 | 国产午夜不卡精品午夜电影 | 国产成人一区二区在线视频 | 国产精品成人观看视频网 | 2025国产精品国产精华 | 国产精品va在线观看无码不卡 | 国产成人精品高清 | av日产天天射 | 国产极品美女高潮无套在线 | 国产99热精品码毛片在线 | a级毛片无码兔费真人久久 a级毛片无码专区 | 国产成人四虎在线观看 | 精品国产亚洲人成在线观看芒果 | 国产午夜成人av在线播放 | 99精品国产自产在线观看 | 91久久夜色精品 | 国产欧美第一页 | av中文无码乱人伦在线观看 | 国产午夜片无码区在线播放 | av在线高清亚洲 | 99精品欧美一区二区蜜桃免费 | 国产三级aⅴ在线播放 | 国产午夜福利精品在线观看不卡 | 97无码人妻一区二区三区 | av免费手机看不卡 | 高清无码国产黄片 | 国产美女合集 | 国产精品乱码一区二区三区 | 国产美女久久久久久久久久久 | 国产精品无码一区视频 | 国产欧美日韩在线综合网 | 成人无码精品一区二区在线 | 国产成人久久精品二三区无码 | 99久久一区二区精品 | 18禁美女黄网站色大片免费看 | 国产视频一区欧美二区日本三区动 | 国产三级在线视频播放线 | 国产精品国产免费 | 丰满少妇偷人51视频 | 国产成人五月综合网 | 国产精品一亚洲av | 国产无码免费 | 国产亚洲综合另类无码 | 国产成人av大片大片在线 | 国产91免费在线 | 极品少妇被猛得白浆直流草莓视频 | av成人一区 | 国产91呆哥在线视频 | 国产欧美综合在线 | 福利精品老师国产自产在线 | av无码网站 | 国产精品免费aⅴ片在线观看 | 国产精品蜜臀在线观看 | 国产日韩欧美一区二区三区在线 | 国产精品制服丝袜欧美 | 2025中文字幕在线无码视频 | 成在线观看网站免费观看 | 丰满人妻少妇久久久久 | 911国产影院在线观看 | 国产成人亚洲精品无码h | 韩国激情一区二区无码在线 | 国产超碰人人做人人爱电影 | 91精品国产乱码在 | 国产高清在线新超碰在线播放 | 精品久久无码中文字幕 | 成在人线av无码免观看 | 国产精品无码专区 | 国产成本人三级在 | 国产超级va在线观看 | 成人午夜福利视频后入 | 91人妻中文字幕无码专区 | 精品无码国产不卡在线观看首 | 国产精品成人扳**a毛片 | 国产成人理论 | 国产免费午夜在线观看 | 99精品国产色综合久久不卡 | av在线不卡免费看 | 精品国产毛片va一区二区三区 | 国产日韩欧美精品另类一区二区 | 国产成人精品一区二区视频 | 国产成人亚洲精品电影在线观看 | 国产偷窥熟女高潮 | 91av视频在线免费观看 | 精品亚洲一区二区三区在线播放 | 成人亚洲国产欧美另类 | 国产麻豆老师在线观看 | 精品视频在线观看一区二区 | 国产精品亚洲w码日韩中文app | 国产av无码专区亚洲av人妖 | 国产精品特黄一级国产大片 | 高清无码在线网站 | 国产成人av无码在线 | 成人精品无码专区 | 国产三级在线观看免费播放 | 国产成人精品电影在线观看18 | 国产福利一区二区三区在线观看 | 国产超级乱婬aⅴ片 | 国产亚洲精aa在线观看不卡 | 成人午夜高潮免费视频试看 | 911精品国产一区二区在线 | 极品少妇一区二区三区四区 | 国产福利小视频在线免费观看 | 精品高清美女精 | 白丝护士高潮喷水免费网站 | 国产91精品白浆无码流出久久 | 国产亚洲大尺度无码无码专线 | 国产高清精品自拍 | 成人免费无码成人影院日韩 | 国产精品毛片va一区二区三区 | 国产高清无码久久 | 成人a毛片在线看免费全部播放 | 国产av无码专区亚洲av导航 | 国产探花在线精品一区二 | 91久久精品无码一区二区毛片 | 高清无码在线一区二区 | 国产午夜精品一区二区三区嫩草 | 国产在线观看免费 | 国产成人久久久精品一区二 | 国产精品欧美亚洲韩国日本久久 | 国产精品白丝jk白祙喷水视频 | 国产爆乳无码无圣 | 国产aⅴ一区二区三区精品 国产aⅴ一区二区三区片 | 精品国产你懂的在线 | av在线免费播放五月天 | 国产精品亚洲一区二区在线观看 | 变态另类一区二区sm | 国产成人无码一区二区动漫 | 91午夜在线 | 国产成人精品在线观看 | 国产精品亚洲āv色欲在线观看 | 国产精品亚洲国产三区 | 国产a级一级淫片免费观看 国产a级作爱 | 国产成人精品第一区二区三区 | 精品国偷自产在线亚洲 | 国产精品亚洲视频一区日韩 | 国产av无码专区亚洲av | 国产精品系列在线观看 | 国产在线不卡精品网站 | 国产品无码一区二区三区在线 | 国产精品一区二区在线观看网站 | 精品视频一区二区三区不卡 | 97人妻精品一区二区三区 | 国产成人高清亚洲 | 91精品啪在线观看国产电影 | 国产亚洲欧美日本韩国黄色 | 囯产精品一区二区三区乱码 | 国产美女一级做受在线观看 | 国产不卡视频一区二区在线观看 | 国产精品一区二区剧情熟女 | 精品久久久久久久无码人妻热 | 国产成人久久一区二区不卡三区 | 91亚洲欧美一区二区三区 | 国产做国产爱免费视频 | 国产三级成人不卡在线观看 | 国产成人自在自线视频 | 精品人妻毛片免费视频 | 2025久久国自产拍精品 | 高清无码精品特黄 | 国产综合久久亚洲综合 | 高清日韩国产无码一区二区 | 1024视频在线观看无码 | 国产成人精品无码免费播放 | 囯产剧情亚洲精品无码一页 | 国产aⅴ一区二区 | 国产偷窥澡堂在 | 动漫精品中文字幕无码第一页 | 国产精品秘一二三区 | 白丝jk女仆爆乳慰喷水流白浆 | 成年人樱桃app下载安装 | 国产精品视频一区二区三区四 | 国产一区免费看久久无码精品 | 国产精品一区在线观看第一页 | 18禁裸体动漫美女无遮挡网 | 国产精品九九视频 | av无码午夜福利一区二区三区 | 91精品高清国产欧美日韩 | 国产成人四虎在线观看 | 国产午夜人在线视频 | 成人午夜性a一级毛片免费 成人午夜亚洲精品无码黄 成人午夜亚洲精品无码区 成人午夜亚洲精品无码网站 | 国产精品福利久久 | 91在线影院| av亚欧洲日产国码无 | 国产黄a大片在线观看 | a级国产欧美激情在线 | av免费不 | 国产精品无码一区二区在线观一 | 91丝袜精品久久久久久无码人妻 | 成人区人妻精品一区二区不卡视频 | av在线无毒免费观看 | 精品亚洲日韩国产成人av在线 | 国产成人a亚洲精v品无 | 91在线精品一区二区大受欢迎 | 国产精品后入内射日本在线观看 | 国产野战无套av毛片户外 | 高清自拍亚洲精品二区 | 91麻豆国产福利在线观看 | 91蝌蚪91九色 | 国产高清精品一区 | 国产精品三级a | 成人免费高清二区三区视频不卡 | 国产成人无码精品一区 | 国产av一区二 | 99精品久久久久久久久久 | 国产精品一区三区 | 国产女优久久 | 精品无码一区 | 国产中文欧美 | 国产精品特黄特色三级视频 | 韩国日本亚洲欧洲一区二区三 | 国产一级av毛片国语对白 | 国产a级一级淫片免费观看 国产a级综合区毛片久久国产精品 | 国产精品一级毛片无码视频 | 国产三级片亚洲欧洲三级片a级 | 国产成人精品久久久久大片 | www.中文字幕日本 | 国产爽的冒白浆的视频高清 | 国产一区二区精品丝袜 | av无码人 | 国产成人精品一区二区三区影院 | 国产狂喷潮在线观看国产片 | av片在线观看| 国产精品无码专区第1页 | 国产无套露脸视频在线观看 | 国产成人精品免费视频大全可播 | 国产美女一级a作爱在线观看 | 国产一区内射最近更新 | 国产精品一区二区三区免费观看 | 国产成人精品久久一区二区 | 国产高清无码干丝袜 | 国产av拍拍拍黄 | 国产精品无码麻豆放荡av | 国产免费午夜高清 | 91精品国产午夜福利在线观 | www国产精品内射老熟女 | 精品无码一区二区三区 | 国产成人免费无码av在线播放 | 精品无码成人网站久久久久久无码 | 精品国产你懂 | 国产三级内射自拍 | 国产一级一级一级成人毛片 | 国产高清一区二区三区 | 精品日产一区二区三区手机 | 国产精品成人无码av无码免费 | 国产精品思思在线 | 国产成人av三级在线观看 | 国产精品美女久久久久网站9 | 国产成人久久精品麻豆二区33 | 国产成人综合久久精品推 | 国产黄色视频 | 国产av日韩一区 | 国产精品视频一区二区三区无码 | 国产1区2区在线观看 | 国产无码毛片一区二区三区 | 福利一区二区久久 | 国产人妻熟女玄幻 | 国产欧美视频在线观看 | 国产精品高潮呻吟久久av旡码 | 国产亚洲视频在线观看网 | 国模无码视频一区二区三区 | 国产精品怕怕怕免费视频大全 | 国产91视频免费 | 91精品一区二区综合在线 | 2025精品国产综合久久 | 国产91高潮操逼视频流白浆 | 国产区视频在线 | 2025精品国偷自产免费观看 | 国内福利写真片视频在线观看 | 国产精品视频一区二区三区不卡綜合 | 2025国精品夜夜天天拍 | 3d动漫精品啪啪一区二区免 | 国产原创高清不卡av在线一区 | 国产探花在线精品一区二 | 精品国产日韩一区三区 | 激情一区二区三区成人 | 99精品热视频国产 | 精品人妻无码区在线视频 | av天堂永久资源 | 97人人添人人澡人人澡人人澡 | 国产一区二区在线观看年轻 | 国产精品亚洲二区在线 | 国产免费私拍一区二区三区 | 91麻豆精品国产91久久久久久 | 91寡妇天天综合久久影院 | 成人婷婷网色偷偷亚洲男人 | 国产午夜精品一区二区 | 国产一级毛片内射年月直播 | 精品无码91久 | 国产蜜桃色欲91精品一区二区 | 国产a一级无码毛片一区二区三区 | 91精品麻豆日日躁夜夜躁 | 国产人妻人伦精品1国产 | 国产品精十八禁免费的网站 | 国产av中文字幕乱码高清 | 精品人妻一区二区三区夜夜嗨 | 国产精品日韩精品久久密挑 | 国产一区二区免费在线观看 | 丰满少妇熟乱xx | 国产成人精品cāo在线 | 国内丰满少妇一a级毛片视频 | 国产高清美女一级a毛片久久 | 国产一区二区三区免费观看在线 | 国产av永久精品无码 | 国产丝袜在线精品丝袜不卡 | 精品国产福利在线观看不卡 | 成人综合亚洲日本一区二区 | 激情欧美经典日韩 | 国产无套护士丝袜在线观看 | 国产经典三级在线播放 | 国产品无码一区二区三区在线 | 99国产免费热播视频 | 成人无码潮喷视频 | 极品尤物国产在线播放 | 国产欧美日韩在线在线播放 | 国产丝袜肉丝视频在线观看 | 高清无码午夜福利视频 | 国产偷倩视频 | 国产中文字幕视频在线观看 | 精品视频一区二区三区四 | 国产激情电影综合在线观看 | 韩国在线观看一区二区三区 | 精品无码国产一区二区三区在线看 | 国产av无码一区二区三区最天天 | 国产精品免费一区二区在线观看 | 国产自啪精品视频. | 国内偷自第一区二区三区 | 国产成人三区四区 | 极品尤物一区二区三区小说 | 国产精品成人无码av网站 | 国产黄色激情视频 | 精品视频一区二区三区免费观 | 国产三级真人视频播放页 | 国产成人综合色视频精品 | 99久久精品美女高潮喷水 | 国产成人a人亚洲精品无码 国产成人a视频 | 精品亚洲aⅴ无码午夜在线观看 | 91大神福利在线 | 18禁裸体动漫美女无遮挡网站 | 国产美女精品久久久久中文 | 国产专区亚洲欧美另类在线91 | 精品国产在天天线2025 | 国产成人在线小视频 | 国偷自产中文二区三 | 交换娇妻呻吟声不停中文字幕 | 国产人一极精品视频 | 99国产女人高潮抽搐喷浆视频 | 国产a网欧美午夜性 | 国产成人精品午夜在线观看 | 国产精品国产高清国产av | 国产精品成人va在 | 国产高清在线观看视 | 97人妻起碰免费 | 3d动漫精品一区二区三区 | 国产午夜不卡av高清 | 高潮国产喷水视频 | 国产一区欧美日韩 | 精品美女视频免费直播 | 国产高清一区二区三区视 | 高清国产在线播放91 | 国产欧美国产精品第一区 | 精品一区二区国产 | 精品国产一区二区三区无码 | 国产免费高清视频第一页 | 国产按摩推油一区二区三区在线 | 国产亚洲欧美久久久久 | 国产在线观看福利片 | 动漫番肉在线观看 | 国产精品免费福利久久 | 精品人妻系列五月天 | 国产a国产片高清 | 97人妻碰碰免费 | 国产成人欧美一区二区三区的 | 精品人妻大屁股白浆无码下载 | 变态另类国产精品制服丝袜 | 国产人妻熟女txt | 黄色视频一区二区 | 国产一区二区三区在线播放 | 91大神最新国自产拍在线播放 | 国产ww久久久久久久久久 | aa无码在线免费 | 国产精品一区二区三区久久 | 国产精品免费一区二区 | 97人妻精品一区二区三区 | 国精产品一品二品国精品69xx | 国产午夜精品喷水久久 | 国产午夜精品久久精品电影 | av色综合网 | 国产精品亚欧美一区二区 | 国产v日本v欧美v一二三四区 | 国产精品青草综合久久久久99 | 国产人妖性爱专区 | a级毛片全部免费高清视频 a级毛片视频国产精品视频 | 国产丝袜一区二 | 国产精品无码首页自拍 | 黑人最猛系列无码 | 精品国产高清露脸在线观看 | 国产在线精品免费一区二区三区 | 精品久久人妻少妇 | 精品人妻无码一区二区三区视频 | 国产成人精品午夜福利网站 | 国产午夜无码专区喷水 | 成人av在线 | 国产麻豆国精精品久久毛片 | 精品无码日韩一区二区三区 | 精品国产一区二区三区久久影院 | 成人免费无码大片a毛片抽 成人免费无码大片a毛片抽搐 | 精品国产一区二区三区久久狼黑人 | 国产麻花豆剧传媒 | 国产亚洲一区二区在线观看 | 国产三级高清在线观看 | 国产a级作爱 | 黄色视频一区二区 | 国产精品丰满大屁股流白浆 | 91大神精品全国在线观看 | 国产午夜福利精品视频 | 国产蜜臀久久v一 | 国产91精品一区在线观看 | 国产高清国际精品福利色噜噜 | 18禁超污无遮挡免费av |