1
0
mirror of https://github.com/ppy/osu.git synced 2024-12-16 12:42:56 +08:00

Use Bindable for DropDown.

This commit is contained in:
Huo Yaoyuan 2017-03-22 07:49:21 +08:00
parent f0edf5d3d3
commit b46ded7794

View File

@ -1,7 +1,7 @@
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>. // Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE // Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
using System; using System.Collections.Generic;
using osu.Framework.Configuration; using osu.Framework.Configuration;
using osu.Framework.Graphics; using osu.Framework.Graphics;
using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Containers;
@ -10,7 +10,6 @@ using osu.Framework.Graphics.Sprites;
using osu.Framework.Graphics.UserInterface; using osu.Framework.Graphics.UserInterface;
using osu.Game.Graphics.Sprites; using osu.Game.Graphics.Sprites;
using osu.Game.Graphics.UserInterface; using osu.Game.Graphics.UserInterface;
using System.Collections.Generic;
namespace osu.Game.Overlays.Options namespace osu.Game.Overlays.Options
{ {
@ -33,12 +32,8 @@ namespace osu.Game.Overlays.Options
get { return bindable; } get { return bindable; }
set set
{ {
if (bindable != null)
bindable.ValueChanged -= bindable_ValueChanged;
bindable = value; bindable = value;
bindable.ValueChanged += bindable_ValueChanged; dropdown.SelectedValue.BindTo(bindable);
bindable_ValueChanged(null, null);
if (bindable.Disabled) if (bindable.Disabled)
Alpha = 0.3f; Alpha = 0.3f;
} }
@ -46,23 +41,6 @@ namespace osu.Game.Overlays.Options
private Bindable<T> bindable; private Bindable<T> bindable;
private void bindable_ValueChanged(object sender, EventArgs e)
{
dropdown.SelectedValue = bindable.Value;
}
private void dropdown_ValueChanged(object sender, EventArgs e)
{
bindable.Value = dropdown.SelectedValue;
}
protected override void Dispose(bool isDisposing)
{
bindable.ValueChanged -= bindable_ValueChanged;
dropdown.ValueChanged -= dropdown_ValueChanged;
base.Dispose(isDisposing);
}
private IEnumerable<KeyValuePair<string, T>> items; private IEnumerable<KeyValuePair<string, T>> items;
public IEnumerable<KeyValuePair<string, T>> Items public IEnumerable<KeyValuePair<string, T>> Items
{ {
@ -73,15 +51,8 @@ namespace osu.Game.Overlays.Options
set set
{ {
items = value; items = value;
if(dropdown != null) if (dropdown != null)
{
dropdown.Items = value; dropdown.Items = value;
// We need to refresh the dropdown because our items changed,
// thus its selected value may be outdated.
if (bindable != null)
dropdown.SelectedValue = bindable.Value;
}
} }
} }
@ -104,7 +75,6 @@ namespace osu.Game.Overlays.Options
Items = Items, Items = Items,
} }
}; };
dropdown.ValueChanged += dropdown_ValueChanged;
} }
} }
} }