当我更改他们的ImageSource时,我试图在我的页面更新/重新绘制图像 - 这将帮助我让他们重新加载异步。
我认为绑定到图像的imageSource具有可绑定属性是一个开始,但它没有更新图像。我尝试了很多方法,包括一个带有OnPropertyChanged事件的viewModel方法,但我不认为我完全理解这一点。
这个绑定也必须在代码中完成,这就是应用程序的编写方式(最小的xaml)。
到目前为止,我的一般方法是:
可绑定属性
public static readonly BindableProperty ImageFileProperty =
BindableProperty.Create("ImageProperty", typeof(string),
typeof(CustomImageClass));
public string ImageProperty
{
get
{
return (string)GetValue(ImageFileProperty);
}
set
{
SetValue(ImageFileProperty, value);
}
}
CustomImageClass构造函数内部:
this.SetBinding(ImageFileProperty, "ImageProperty");
从这里开始,我希望在更新ImageSource并更改图像时更改图像。我希望这是足够具体的,我认为绑定到xaml的所有不同示例都让我感到困惑,因为我需要在代码中完成它。
答案 0 :(得分:0)
抱歉英语不好
我想这里有很多问题......
如果我理解得很好,你想在CustomImageClass中创建一个BindableProperty。是对的吗? 如果是,那么您可以使用绑定属性名称的默认约定,如下所示(请注意我也更改了类型):
protected void btnLogin_Click(object sender, EventArgs e)
{
using (SqlConnection con = new SqlConnection(Helper.GetCon()))
{
con.Open();
SqlCommand cmd = new SqlCommand("SELECT su.SupplierID, su.Status, ut.Username, ut.Password, ut.UserID FROM UserTable ut INNER JOIN Suppliers su ON su.UserID = ut.UserID Where ut.Username = '" + txtUsername.Text + "' AND ut.Password = '" + Helper.CreateSHAHash(txtPassword.Text) + "'", con);
SqlDataReader dr = cmd.ExecuteReader();
if (dr.HasRows)
{
while (dr.Read())
{
Session["SupplierID"] = dr["SupplierID"].ToString();
Session["Status"] = dr["Status"].ToString();
Session["Username"] = dr["Username"].ToString();
Session["UserID"] = dr["UserID"].ToString();
}
string statuscode = Session["Status"].ToString();
switch (statuscode)
{
case "Active":
Session["Status"] = null;
Session.Remove("Status");
Response.Redirect("\\Account\\Suppliers\\Default.aspx");
break;
case "Inactive":
lblsource.Text = "Login Page: INACTIVE";
lblmessage.Text = "Welcome Back! Please let us know on how we can help you better.";
break;
case "Pending":
lblsource.Text = "Login Page: PENDING";
lblmessage.Text = "Thank you for registering with us. We will process your request shortly.";
lblsource.Visible = true;
lblmessage.Visible = true;
break;
case "Blocked":
lblsource.Text = "Login Page: BLOCKED";
lblmessage.Text = "We are so glad to hear from you. Please settle your account.";
lblsource.Visible = true;
lblmessage.Visible = true;
break;
}
}
else
{
Label1.Visible = true;
}
}
您无法将绑定设置为刚刚在构造函数中创建的此属性。这将在您使用该类时使用(在xaml或c#中)。
现在你必须使用你的属性来设置你想要显示的图像。我认为你应该在这个类中有一个属性为Image类型的变量或私有属性,例如'image',所以,你应该在构造函数中做
public static readonly BindableProperty ImageFileProperty =
BindableProperty.Create("ImageFile", typeof(ImageSource),
typeof(CustomImageClass));
public ImageSource ImageFile
{
get{ return (string)GetValue(ImageFileProperty); }
set{ SetValue(ImageFileProperty, value); }
}
请告诉我,如果我误解了。 我希望能帮助你。