国产凹凸在线-国产拗女一区二区三区-国产白白视-国产白领-国产白拍-国产白丝jk被疯狂输-国产白丝喷-国产白丝在线

金喜正规买球

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
国产顶级特黄大片 | 亚洲精品国偷自产在线 | 精品日本亚洲影视 | 国产激情免费 | 91牛牛国产在线无弹窗 | 日本高清不卡一区二区三区在线 | 亚洲欧美中 | 亚洲色中文字幕在线播放 | 亚洲日本va在 | 成年人视频网站 | 亚洲一区二区经典在线播放 | 久青草国产在线视频www | 亚洲v中文在线播放免费 | 精品人伦一区二区三区蜜桃黑人 | 免费超爽大片黄 | 女子初尝黑人巨嗷嗷叫 | 国产亚洲福利在线视频 | 欧美特黄一免在线观看 | 国产午夜福利电影h | 人人色在线视频播放 | 色偷偷国色天香在线观看免费视频 | 亚洲精品∧v在线观看 | 爱情岛论坛 | 亚洲精品在线中文字幕 | 日本不卡中文字 | 日本国产在线播 | 九九九亚洲精品 | 日韩精品午夜视频一区二区三区 | 菠萝菠萝蜜视频在线观看免 | 欧美国产精品一级二级三级 | 果冻传媒视频一二在线观看 | 性欧美一级 | 国产日韩欧美视频成人 | 日韩一区二线视频 | 日韩精品欧美有码 | 日本理论午夜高清中文字幕 | 欧美三级欧美做a爱 | 亚洲国产高清视 | 中文字幕在线不卡精品视频99 | 欧美日韩不卡高清在线看 | 欧美好看的中文字幕在线精品 | 天堂mv在线mv免费mv香蕉 | 国产乱子伦视 | 激情国产原创在线观看 | 精品免费观看 | 欧美高清一区 | 国产精品永久 | 亚洲欧美日韩另类精品一区二 | 国产制服中文字幕在线 | 97色伦色在线综合视频 | 成人亚洲 | 欧美国产一区二区 | 日本a∨在线 | 狂处让老二爽18p | 国产福利小电影视福利在线 | 精品国内一区二区三区免费视频 | 国产不卡视频一区二区三区 | 欧美高清性色生活片 | 久热国产在线一区二区v | 国产午夜亚洲精品理论片八戒 | 九九九九九在线精品区 | 九九热视频在线免费观看 | 国产老妇伦国产熟女中文视频 | 亚洲亚洲人成综合网络 | 欧美日韩高清不卡 | 久青草国产在视频青草99在 | 国产高清一区二区不卡视频 | 韩国一级| 91九色老熟女免国 | 成全影视| 国产乱码精品一区二区三区小说 | 国产网站久章草在线视频 | h在线观看网站 | 99热只有这里有99精品 | 欧美人与动牲猛交a欧美精品 | 电影免费在线观看中文字幕 | 亚洲一区在线免费 | 国产区二区 | 欧美日韩综合一区在线观看 | 视频区国产图片区小说区 | 亚洲一区二区三区在线观看网站 | 国产日韩一区二区三区视频免费 | 日韩欧美国产一 | 日韩激情电影在线观看 | 亚洲视频日| 精品国产电影自在免费观看 | 欧美女优在线观看br | 国产精品无 | 欧美黑人又粗又大的性格特点 | 日韩欧美一区二区尤物 | 日韩视频第二页 | 九九热视频在线播放 | 欧美精品一区在线发 | 精品亚洲欧美日韩 | 国产综合成色在线视频 | 日韩高清va视频 | 国产欧美日韩成人 | 精品厕所偷拍各类美女tp嘘嘘 | 日韩欧美一区二区不卡看片 | 91九色蝌蚪熟女 | 欧美极品日韩极品1 | 日韩欧美第一区二区三区 | 国产主福福利在线观看 | 国产放荡对白 | 国产精品影片在线免费观看 | 成l人在线观看线路1 | 一区二线视频 | 国产一区二区在线影院 | 三年片在线观看免费观看 | 国产精品女同视频一区二区 | 片午夜在线观看 | 日本视频一区二区三区 | 在线中文字幕不卡视频 | 精品国产午夜福利在线观看 | 国产在线精品福利大全 | 妇欲乱肉人伦 | 97色色色 | 国产在线综合网 | 亚洲日韩在线中文字幕第一页 | 欧美午夜全部免费影院 | 国产欧美日韩在线观看 | 欧美一区精品视频一区二区 | 成人欧美精品资源在线观看 | 亚洲伦理精品一区二区三区 | 国产精品亚洲自在线播放页码 | 国产精品亚洲精品五月 | 欧洲欧美人成视频免费播放 | 中文字幕偷乱视频在线 | 国产99re在线播放 | 亚洲一二三四中文字幕 | 亚洲精品国产摄像头 | 国产剧情对白刺激在线 | 成人午夜爽爽爽免费视频 | 国产拍偷精品网国产精 | 国产91精品一 | 91香蕉榴莲丝瓜草莓黄瓜榴莲 | 九九热这里只有精品在线观看视 | 亚州欧美自拍另类欧美 | 欧洲在线免费视频 | 亚洲国产变态另类天堂 | 国产网爆门事件视频在线观看 | 激情视频一区二区三区 | 黄频国产免费观看 | 国产一级视频 | 日本中文字幕一区 | 欧美亚洲综合成人专区 | 欧美日韩成人va精品一 | 欧美交换配乱 | 在线视频一区二区三区在线播放 | 日本日韩中文字幕 | 国产精品视频观看 | 精品伊人网 | 国产伦精品一区二区三 | 九一视频国产欧美日韩 | 国产精品青草综合久 | 国产大片好看免费 | 国产玖玖玖九九精 | 日本二码 | 把你的香肠放入我的扇贝里 | 精品亚洲a∨码国产一区二区 | 果冻传媒网站入口 | 在线一区二区美欧视频 | 久青草无 | 青草青草久热精品视频在线播放 | 日韩在线观看中文字幕一区二区 | 亚洲一区二区三区香蕉 | 中文字幕在线精品男人的天堂 | 国产精品丝袜在线观看首页 | 午夜成人亚洲理伦片在线观 | 热门免费电影大片 | 欧美精品网站一区二区三区 | 国产乱子伦精品免费 | 国产又粗又大又爽又免费视频 | 九九re6热在线视频精品66 | 国产色产综合色产在线观看视频 | 国产剧情91露脸一区 | 欧美中文字幕在线视 | 新版资源天堂中文 | 日本欧美一区二区三区免费 | 亚洲国产欧美国产第一区二 | 一二三四视频 | 梦乃爱华作品在线观看播放 | 国品一二三产区区 | 日韩最新国产精品网站 | 国产一在线精品一区在线观看 | 免费人成视网站在线不卡 | 精品一区二区三区国产视频 | 国产亚洲精品高清片在 | 国产欧美日产视频 | 日本三级a∨在线观看 | 91精品一区二区 | 国产日韩中文字幕制服 | 国产一级二级亚洲 | 乱子伦一| 国产大片线上 | 成人一区二区 | 色综合天天综合网国产国产人 | 国产婷婷综合在线精品尤物 | 亚洲精品日韩中文字 | 欧美一区二区三区视 | 欧美精品日韩精品一卡 | 国产高清在线精品一区二区 | 国产日韩另类欧美视频一区二区 | 精品国产黄页网站在线观看 | 国产精品欧美一区二区 | 国产丝袜在线视频 | 精品国产亚洲欧美在线 | 日本高清不卡在线中文字幕 | 91成人短视频在线 | 国产特黄一级aa在线 | 国产欧美日本亚洲精品一4区 | 最新电影电视剧短剧大全 | 亚洲欧美中文字幕国产 | 日本二级在线观看高清 | 日本护士视频亚洲性在线看 | 欧美午夜片在线观看震撼 | 成年女人免费v片 | 999二区在线 | 成人亚洲国产欧美另类 | 亚洲欧美综合网站 | 又大又粗又黄又硬又爽又免费视 | 欧美一区二区三 | 性一交一| 欧美日韩色另类综合 | 日韩去日本 | www.尤物在线 | 曰本还a大片免费视频 | 国产男女爽爽爽爽爽免费视频 | 亚洲精品熟女国产 | 免费精品亚洲国产 | 在线观看www成人影院 | 国产九九自拍电影在线观看 | 不卡线欧美 | 国产华人永久免费 | 成人性毛 | 男同桌上课时狂揉我下面污文 | 天天综合网天天综合 | 成人a视频在线观看 | 日韩免费高清专区 | 亚洲欧美中文 | 亚洲第一| 国产精品交换 | 免费国产一级特黄aa大片在线 | 韩日欧美| 久别的草原在线影院播放免费 | 亚洲人成网址在线播放 | 911中文字幕免费高清观看 | 日韩成人一区二区三区在线观看 | 欧美日韩国产综合视频在线观看 | 国内自拍网 | 人人狠狠综合99综合久 | 欧美日产国产首 | 免费在电影在线观看 | 玖玖源资源站中文字幕一区二 | 色综合天天综合网 | 国产向日葵视频在线观看 | 国产精品178页 | 免费a级伦费影视在线观看 午夜影院网站野外大战 | 亚洲欧美日韩综合一区 | 97精品国产自在现线免费 | 欧美日韩国产免费看 | 国产91青青成人a在线 | 久别的草原在线影院播放免费 | 日本乱码乱码免费高清视频 | 91欧美在线视频 | 97超级碰 | 国产欧美日韩不卡一区二区三区 | 18欧美?日韩?国产?中文 | 国产专区免费资源网站 | a欧美日韩高清在线播放不卡 | 国产一区在线视频 | 亚洲无线观看国产超清 | 欧美日本在线播放 | 日韩精品一区二区三 | 成人看片黄a免费看在线 | 天天综合天天做 | 国产亚洲日韩不卡在线播放 | 欧美va在线观看 | 99国产免费 | 99健康网 | 麻花豆传媒剧国产免费mv观 | 国产精品va在线播放我和闺蜜 | 精品国语自产拍在线观看 | 激情中文一区二区三区四区 | 最近韩国电影hd在线 | 亚洲无线码一区国产欧美国日产 | 国产亚洲日韩网曝欧美台湾 | 免费国产一区二区8x | 亚洲欧美在线精品一区二区 | 欧美精品+在线播放 | 亚洲欧美福利一区二区 | 费精品国产一区国产精品剧情在线 | 一区二区三区视频在线观看 | 日本欧美大码 | 亚洲最稳定资源在线观看 | 日韩专区视频国产在线视频 | 91看片婬黄大片 | 成人免费观看黄a大片夜月 日本亚洲欧美在线视 | 免费观看国产精品 | 日韩免费码 | 国产成年人免费在线观看 | 亚洲精品综合精品自拍 | 国产人成精品香港三级在线 | 九九免费精品视频 | 日产无人区一线二线三线 | 免费在线宅男精品视频 | 国产精品国产精品国产专区不卡 | 国产欧美综合在线 | 男人j日女人p免费视频 | 国产精品极品露脸清纯 | 国产精品xxx在线 | 99久9在线视频 | 动漫精品中文字幕制服一区 | 电视剧热播大 | 欧美影院一区二区三区 | 精品人无 | 精品亚洲制服丝袜高跟 | 能看的国产乱片在线 | 亚洲精品不卡 | 韩国精品一区二区三区在线 | www.美色吧| 99精品国产一区二区 | 国产精品亚洲а∨天堂免下载 | 成人精品天堂一区二区三区 | 国产亚洲蜜 | 在线国产视| 精品尹人在线观看 | 偷自拍亚洲视频在线观看99 | 变态国产欧美激情成 | 欧美在线精品国自产 | 国产一区视频观看 | 国产传媒在线播放 | 成人永久免费视频网站 | 午夜福利在线观看亚洲一区二区 | 日本一二三区视频在线 | 欧美日韩色老太熟女老妇 | 欧美日韩美女精品一区二区 | 亚洲人成免费网站 | 九七九七色伦在线影院 | 欧美日韩在线观 | 国产乱码1卡二卡3卡四卡 | 丰满岳乱一区二区三区在线观看 | 女人一级视频在线观看 | 国产一区而二区亚洲 | 国产黃色精品三級一区二区 | 日本乱亲伦视频中文字幕 | 日本xx| 很黄很黄地在床视频女 | 国产午夜视频专区 | 日韩在线观看视频 | 一级一黄免费视频在线看 | 国产大学生普通话对白 | 日韩欧美精品一区二区二区不卡 | 国产熟睡| 国自产拍偷拍福 | www.国产精品视频 | 网友自拍视频一区二区三区 | 亚洲成ⅴ人片乱码色午夜 | 成人午夜爽爽 | 日韩精品一区二区三区乱码 | 日本遊學打 | 国内精品卡一 | 亚洲日本va在线视频观看 | 成在人线 | 日韩在线二区全免费 | 午夜在线视频91精品 | 韩国午夜理伦三级理论在线观看 | 午夜亚洲理 | 日本在线播放一区二区三区 | 日韩欧洲在线精品一区 | 成人乱妇在线播放 | 亚洲欧美va动漫一区二区 | 丰满的女房东在线观看6 | 国产精品极品露脸清纯 | 国产jk制服丝袜午夜视频 | 护士在办公室被躁bd在线观看 | 国产黑色丝袜在线视频 | 欧美mv| 日韩午夜免费观看 | 色一情一区二区三区 | 亚洲成a人片在线不卡一二三区 | 日韩制服丝袜电影 | 日韩精品一区二区三区中 | 精品国产一区二区三区香蕉欧美 | 国产免费h无 | 97色综合亚洲影院 | 日韩一区二区三区在线 | 免费观看电影真不卡 | 99热精| 日本视频一区二区三区 | 日本一区二区三区免费高清视频 | 日韩精品一区二区三区大桥未 | 欧美aⅴ激情视频 | 国产免费mv大全视频网站 | 欧美a√在线免费观看 | 国产在线观看激情 | 国产亚洲欧美另类第一页 | 五月天丁 | 欧美va在线 | 九九视频精品全部免费播放 | 国产午夜福利精品探花 | 成年女人看片 | 欧美精品专区在线视频 | 日韩欧美精品在线观看 | 在线一区二区电影 | 影视青国产免费起碰 | 一个人看的免费高清www视频 | 欧美在线一级午夜免费 | 九七九七色伦在线影院 | 91精品成人免费国产片 | 国产一二三四区中 | 亚洲国产v片在线 | 日韩精品午 | 三区在线观看不卡 | 国产福利一区二 | 最新热门高清电影 | 中文字幕片 | 日本边添边摸边做边爱的视频 | 国产精品免费一级高清 | 日韩中文在线观看视频 | 日产精品一二三四区别价格 | 欧美日韩一区二区三 | 日本一级a大片在线观 | 日本成年人视频网站 | 欧美一区二区三区四区国产另类 | 最新国产福利在线观看精品 | 97视频在线播放免费观看视频 | 夫妇交换性4p中文字幕 | 国产按摩院在线网站 | 欧美级韩国三级日本三级 | 国内真实愉拍系列在线 | 欧美一区二区三区四区国产另类 | 9191精品国产观看 | 成人熟女日韩欧美综合 | 亚洲免费| 国产午夜福利a∨在线机视频 | 欧美国产中文免费精品视频 | 日韩亚洲制服欧美综合 | 久热爱精品视频在 | 日韩一区二区视频在线观看 | 国产精品资源在线播放 | 亚洲精品久荜中文字幕 | 日韩在线视频在线观看 | 日本一卡2卡三卡4卡网站 | 免费大片黄国产在线观看 | 欧美高清国产一区二区三区 | 精品一区在线观看 | 国产一区二区三区免费 | 日本簧片在线观看 | 免费高清 | 国产高清视频一区二区在线观看 | 精品国产福利盛宴在线观看 | www.自拍偷拍.com | 亚洲无限 | 国产伦精品一区二区三区免.费 | 欧美日日日 | 精品一本 | 男女一进一出超猛烈的视频 | 一区二区三区四区在线观看视频 | 国产ol丝袜高跟在线观看不卡 | 午夜福利国产一区二区视频 | 中国特级黄大片视频 | 亚洲日本在线中文字幕 | 国产一级a| 天天躁日日躁狠狠很躁 | 国产福利在线导航 | 国产精品视频网 | 国产日韩精品欧美一区视频 | 国产精品极品 | 九九热视频在线播放 | 日韩午夜影院 | 国产偷窥盗拍丰满老熟女 | 欧美精品免费观看二区 | 国产免费爽爽视频 | 被伴郎的 | 国产一卡二卡三卡四卡视频版 | 欧美色欧美亚洲高清在线观看 | 欧美视频好看站日韩国产 | 国产日产高清欧美一区 | 国内揄拍国内精品视 | 国产猛男猛女超爽免费视频 | 日韩精品搭讪在线视频播放 | 在线观看视频资源 | 国产一级做a爰片在线看免费 | 日本不卡一区二区三区视频 | 懂色中文一区二区在线播放 | 日韩在线观看91精品免费 | 精品97国产免费人成视频 | 亚洲国产网站在线观看 | 欧洲一级大黄大 | 亚洲欧美国产精品制服 | 国产精品亚洲综合一区在 | 无限观看免费完整大片 | 欧洲色国产欧美一区精品77 | 包括电视 | 日产精品一卡2卡三卡4乱码 | 九九九国产视频 | 精品成人福利在线播放 | 国产欧美亚洲精品第一页 | 欧美日韩日本在线观看一区 | 国产亚洲精品综 | 成人欧美一区二区三区1314 | 日产2025一区在线观看 | 国产精品福利在线观看免费不 | 亚洲精品欧美精品日韩精品 | 加勒比综合免费不卡在线观看 | 国产亚洲精品综合在线网址 | 国产黄在线观看免费视频45分钟 | 日韩美女欧美精品 | 福利片一区二区 | 亚洲黄免费看网站国产福利一区二 | 亚洲成?v人片在线观看福利 | 国产高清乱伦自拍 | 亚洲免费精品一二三四 | 粗大的内捧 | 爽妇网国产精品 | 国产污污污十八在线精品观看 | 秋霞电影在线观看 | 午夜影院c绿象 | 午夜视频在线观看免费 | 日韩一进一 | 福利一区二区三区在线观看 | 国产亚洲精品激情都市 | 免费国产精品专区 | 国产欧美精品一区二区三区四区 | 欧美在线精品国自产 | 日韩欧美亚洲一区二区综合 | 亚洲区小说区 | 国产亚洲美女精品 | 免费国产亚洲视频在线播放 | 成人妇女免费播放 | 国产精品黄页免费高清在线观看 | 日韩在线成年视频人网站观看 | 亚洲欧美日韩高清综合678 | 国产情侣在视频 | 免费高清资源等你来享 | 精品国产呦系列在线观看 | 韩剧tv网 | 人人添人人 | 甜性涩爱| 日本精品人 | 99re6热在线精品视频观看 | 国产精品成人h片在线 | 亚洲欧美国产日产综合不卡 | 日韩精品最 | 最近中文字幕免费mv视频7 | 国产精品免费视频一区二区三 | 国产精品一区二区三区免 | 国产高清在线精品一区在线 | 国偷自产一区二区三区蜜臀 | 国产私人视频在线播放 | 自拍偷自拍亚洲精品10p | 精品自拍亚洲一区在线 | 成全经典电影高清在 | 午夜在线电影网 | 欧美一级做a爰片免费 | 亚洲第一香蕉 | 日本精品视频在线观看 | 亚洲欧洲日韩综合色天使 | 国产日产欧美一区二区蜜桃 | 丰满岳妇乱一区二区三区 | 国产系列丝袜熟女精品视频 | 国产91对白在线观看 | 日本特级婬片中文免费看 | 视频一区视频二区在线观看 | 国产三香港三韩国三 | 国产精品青草综合久 | 国产日本欧美精品 | 亚洲中文字幕一二三区 | 两性午夜刺 | 精品日韩在线一区二区 | 国产在线一区二区三区不卡 | 欧美中字日韩一区 | 日本三级网址 | 国产精品一区在线观看第一页 | 99视频在线精品国自产拍亚瑟 | 国产玖玖玖九九精品视频靠爱 | 久青草国产在视频在线观看 | 精品97国产免费人成视频 | 国产真实乱xxxⅹ | 国产精品高颜值极品美女 | 日本视频一区二区三区 | 阿v视频国产免在线手机观看 | 菠萝蜜视频在线观看高清 | 国产精品国 | 99热这里只有精品 | 欧洲亚洲一区二 | 精品国产午夜福利精品推荐 | 91露出在线 | 在线精品自拍亚洲第一区 | 精品亚洲制服丝袜高跟 | 欧美日韩亚洲中文字幕吗 | 日韩高清va视频 | 国产亚洲成aⅴ人片在线观看 | 亚洲日本精品va中文字幕 | 亚洲欧美性生活视频 | 国产制服精品一区二区视色 | www.成人影片| 国产日韩欧美日韩欧美 | 国产老熟女乱子一区二区 | 国产真实乱系列视频在线观看 | 国内一区二区三区在线观看 | 国产微拍精品一区一再猛点 | 日韩精品最 | 8090成人| 欧美性生 | 日本免费一区二区五区六区 | 欧美靠逼| 国产一区二区三区视频精品 | 国产在线精品国自产拍影院同性 | 成人精品一区二区三区电影黑人 | 99久视频 | 国产精品视频大陆精大陆 | 国产一级视频免费看 | 日韩不卡在线视频 | 农村熟女大胆露脸自拍 | 日本一线二线 | 国产乱子伦60女人的皮视频 | 日本一本无道码日韩精品 | 日韩一区二区三区射精 | 国产白丝jk学生在线播放 | 日本黄一级日本黄二级 | 美女在线观看永久免费网站 | 成人羞羞视频在线观看网站 | 国产一区二区三区在线免费 | 精品一卡2卡三卡四卡乱码 国产一区二区在线观看网站 | 美丽的姑娘高清版在线观看 | 国产一区二区 | 欧美视频中文字幕 | 精品欧美一区二区3d动漫 | 日韩精品电影 | 日本名勝景點推薦 | 精品日本在线免费观看 | 日本亚欧乱色2025视频 | 扒开她的 | 私人电影院 | 国产亚洲精品高清在线 | 成人欧美在线观看 | 欧美精品高清在线观看爱美 | 日韩成人午夜在线视频 | 国产精品免费一区二区三区视频 | 日本一区二区中文字幕 | 欧美精品金8天国系列 | 另类视频一区二区三区 | 脱岳裙子| 91天天综合免费看国产 | 日本特级一区二区三区大片 | 182tv免费播放线路一线路二 | 91精品国产品国语在线 | 日本精品无人区1区2区3区 | 欧美激情综合五月 | 日韩不卡高清中文字幕 | 在线视频直播 | 日韩中文字幕在线 | 亚洲美女又黄又爽在线观看 | 日韩女同一区二区三区 | 国产一级做a爰片在线 | 日本搞黄在线观看 | 欧美三级在线看 | 香蕉精品亚 | 欧美.成人.综合在线 | 欧美午夜色淫网 | 成a人片免费在线观看 | 精品国产自在在线午夜精 | 影院4k电影在线 | 国产福利91精品在线 | 精品国产高清自在线一区二区三区 | 免费软件下载网站 | 日本欧美视频 | 亚洲精品一区二区三区在 | 456性欧美在线 | 国产乱码精品一区三上 | 91视频网站免费 | 日本夜爽爽 | 国产手机精品一 | 国产精品导航一区二区 | 网站视频福利 | 91国语精品自产拍在线观看 | 国内精品视频在线观看 | 青青青草国产线观 | 日韩欧美国 | 中文字幕日韩精品中文区 | 亚洲欧美色国产综合 | 亚洲日本一区二区 | 欧美日韩亚洲丝袜制服 | 动画片大全大人动漫在线观看 | 国产日韩网站 | 国产精品va在线 | 欧美不卡视频 | 国产欧美综合在线 | 国产欧美又粗又猛又爽 | 成人激情午夜福 | 亚洲成v | 国产性爱在线播放 | 日韩欧美另类一区二区三区 | 欧美va在线观看 | 亚洲综合二区 | 国产黄在线 | 日本二级在线观看高清 | 成人国产99视频在线观看 | 欧美自拍视频 | 国产精品任我爽爆在线播放 | 中文字幕va一区二 | 欧美日韩第一页中文字幕 | 亚洲一码二码三码 | 好屌色在线 | 国产欧美在线 | 韩国好看女 | 97天堂nba永久| 天天综合网~永久入口 | 日本一区二区三区四区视频 | 成人a大片在线观看 | 欧美视频专区一二在线观看 | 黑人一区二区在线 | 在线观看片免费人 | 日韩在线欧美高清一区 | 精品国产动漫日 | 欧美一级专区免费大片 | 亚洲一区制服丝袜 | 国产精选在线视频 | 呦导航福利精品 | 老子午夜伦理不卡一级电影 | 欧美乱伦视频激情浪潮密臀 | 国产在线观看精品国产 | 国产欧美亚洲精品a | 肥女巨肥巨大黑毛 | 成人涩涩涩视频在线观看 | 国产精品一国产精品一k频道 | 国产爽爽视 | 日产精品区至六区在线 | 免费阿v网站在线观看g | 国产在线观看精品 | 免费a级伦费影视在线观看 午夜影院网站野外大战 | 成人抖音下载 | 国产精品中文 | 日本三级一区 | 国产综合精品一区二区 | 亚洲国产精品sss在 日韩欧美国产精品91 | 777午夜精 | 日韩中文字幕网址99老鸭窝 | 91香蕉小视频 | 日本高清www午色夜在线网站 | 日韩欧美国产高清在线观看 | 国产古装全黄a级视在线观看 | 欧美日韩不卡合集视频 | 韩国三级特黄 | 国产午夜福利片在线观看一区 | 97色轮| 国产呦福利呦交欧美一区 | 精品日韩女仆在线观看不卡 | 村长巨大开嫩苞 | 欧美亚洲国产清纯综合图区 | 国产对白嫖老妇搡老太 | 韩国日本香港三级 | 国产精品欧美专区在线观看 | 国产另类ts人妖一区二区 | 国产一线二线三线 | 91精品国产薄丝高跟在线动漫 | 国产一区二区在线免费观看 | 欧美色精品视频在线观看九 | 国产激情免费 | 国产午夜免费福利红片 | 国产最新进 | 精品综合欧美 | 在线观看高 | 国产精品免费高清在线观看 | 国色天香社区视频免费版 | 7777在线 | 欧美乱码精品一区二区三 | 国产精品日 | 欧美亚洲国产日韩完全在线电影 | 日韩制服丝袜在线视 | 蜜臀视频 | 制服国产日韩欧美另类 | 精品一区二区三区日本视频 | 亚洲第一视频在线 | а8天堂资源在线官网 | 日韩一区二区三区视频播放 | 在线视频一区二区三区在线播放 | 亚洲韩国欧美一区二区三区 | 国产精品丝袜美腿在线 | 99热这里都是国产精品 | 欧美日韩视频在线一区二区 | 无人区一码二码三码四码区 | 国产乱理伦片在线观看夜一区 | 亚洲国产呦萝小初 | 91欧美日韩91桃 | 精品国产福利在线观看 | 国产区成人精品视频 | 女人与公拘交酡全过程 | 日产精品 | 欧美日本国产日韩一区二区三区 | 美女被肏翻白眼视频在线观看 | 亚洲日韩中文在线精品第一 | 在线观看国产精选免费 | 国产草莓视频无a在线观看 国产传媒果冻天美传媒 | 欧美亚洲下一页 | 国产真实露脸 | 伊人春色 |